更新:我可以知道递归如何工作于类似的代码吗?
def fib( n ):
global cnt
cnt += 1 #global cnt is assigned and changed
if n <= 2:
return 1
return fib( n - 1 ) + fib( n - 2 )
cnt = 0
print(fib( 10 ))
print("fib is called", cnt, "times") #109 times!
老问题:
def power_of_two(n):
global cnt
cnt += 1
if n == 0:
return 1
return 2 * power_of_two(n-1)
cnt = 0
print(power_of_two(3))
print("power_of_two is called", cnt, "times")
问:cnt的值是多少?当执行上述代码时,函数power_of_two()被调用了多少次?
A. 8, 4 times
B. 4, 3 times
C. 6, 4 times
D. 3, 3 times
我运行了代码,它显示cnt是4,那么它应该是答案B吗? 但是对于答案B,它说代码被调用了3次,但它不应该是4次吗? 如果是3,我可以知道为什么吗? 我也想过 Select 答案A,因为它更有意义,但它要求cnt的值,而不是(power_of_two(3))的值. 还是我弄错了问题/我的老师把问题写错了? 我知道这是一个基本的编程问题,但非常感谢您的帮助:)