我在pascal中解决了一个主要用于函数的问题而且我没有达到时间限制,并且问题以最佳方式正确解决。那么这些其他功能中的任何一个都可能更快或者我犯了错误并且错误地解决了它?
答案 0 :(得分:1)
简答:试试吧!只需制作3个版本的解决方案,然后针对良好的海量数据进行测试,并记录所需的时间。如果您仍未获得时间限制,请尝试使用更快的PC或查看解决方案。
答案 1 :(得分:1)
while
和repeat
不是函数,而是指示编程语言固有的循环控制结构。
两者都不快,也不慢。两者都更快,两者都更慢。一般的答案是不可能的,你在循环中做的工作越多,任何差异(如果有的话)变得越不相关。
如果你没有解决锻炼问题,那么问题不在于循环的选择。它可能是您选择的算法,可能是您犯的错误,可能是测试机没有足够的处理时间留给您的程序及时。
答案 2 :(得分:0)
假设一个合理的编译器,它们之间应该没有性能差异。
即使存在差异,它也可能是微不足道的 - 人类无法察觉,并且很容易在计算结果的实验误差范围内。
由于这是一项学校作业,我建议回顾上周教授的材料;可能会有一些暗示可以更好地解决问题的方法。
答案 3 :(得分:0)
最初,因为它被认为更快,因为它不允许更改循环变量,这启用了某种优化,特别是如果没有使用循环变量的值。
如今,由于优化的记忆和时间限制较少,各种形式很容易相互转化,整个讨论变得学术化。
请注意,大多数现代编译器(在Delphi之后)向FOR语句添加另一个检查,以检查上限是否大于或等于下限。如果你必须回答这个问题,请仔细检查你的编译器。