取自" MITx:6.00.1x计算机科学导论和使用Python编程"。
我正在做这个课程,在解决测验期间我遇到了问题。我是一个非常新的程序员,我对编程没有足够的想法。
在最坏的情况下运行程序2需要多少步骤?用n,输入x的大小表示你的答案。
def program2(x): total = 0 for i in range(1000): total = i while x > 0: x = x//2 total += x return total
答案 0 :(得分:0)
重写你的程序以获得自己的答案
def program(x):
count = 0
while x > 0:
x = x // 2
count += 1
return count
x = 2 ** 31 => count = 32
x = 2 ** 10 => count = 11
。 。 。
结果:O(log n)
答案 1 :(得分:0)
在最好的情况下,x小于或等于0.我们首先执行一步的赋值total = 0。接下来,我们在范围(1000)循环中执行for i。该循环执行1000次并且在每次迭代时具有三个步骤(一个用于每次循环分配i,以及两个用于+ =操作)。我们接下来检查x> 0 - 不是这样我们不进入循环。为return语句添加一个步骤,在最好的情况下,我们执行1 + 3 * 1000 + 1 + 1 = 3003步。
在最坏的情况下,x是一个大的正数。在这种情况下,我们首先执行一步的赋值total = 0。接下来,我们执行第一个循环1000次(总共3000步),然后我们执行第二次循环(同时x> 0)n次。该循环有五个步骤(一个用于条件检查,x> 0,两个用于 - =和+ =操作)。当我们最终到达x = 0的点时,我们执行条件检查x> 0最后一次 - 因为它不是,我们不进入循环。为return语句添加一个步骤,在最坏的情况下,我们执行1 + 3 * 1000 + 5 * n + 1 + 1 = 5 * n + 3003步。