【发布时间】:2011-05-18 23:17:22
【问题描述】:
我是一名程序员,但没有计算机科学背景,所以最近我一直在关注优秀的 MIT OpenCourseWare 计算机科学和编程入门课程。在此过程中,有人问:“任何仅使用函数定义和调用、基本算术运算符、赋值和条件编写的程序都会在恒定时间内运行吗?”
我认为答案是肯定的,因为所有这些操作看起来都很简单。但正如你们聪明的人可能已经知道的那样,正确答案是否定的,显然是因为可能存在无限递归。
似乎我只是不明白“在恒定时间内”的含义。我想象的意思,听起来只是意味着一个简单的操作需要已知的时间才能完成。我接受递归可以导致你的程序永远运行,但不是每个操作仍然需要有限且可测量的时间......即使现在有无限数量的它们?或者答案只是意味着不能有效地说两个无限递归程序需要相同的时间来运行?
如果有人能给我“在恒定时间内”的权威定义及其含义,我将不胜感激!
【问题讨论】:
-
时间常数是“Big-O”表示法中的
O(1)。您可能还会发现通读此问题会有所帮助 - Plain English explanation of Big O。
标签: computer-science definition