我试图准确理解这个函数是如何工作的,我一直在尝试它,但我不确定。
据我所知:余数为 1(奇数)的任何值都将返回 0
我感到困惑的是:当我计算它时,我得到了
2这将导致但不是 '36//2 + 1' 等于 '19' 而不是 ' 2'?
代码:
def anon(n):
if n % 2 == 1:
return 0
else:
return 1 + anon(n//2)
print(anon(36))
请您参考如下方法:
让我们看看 anon(36) 会发生什么:
36 % 2 不是 == 到 1,所以它返回 1 + anon(18)。
18 % 2 不是 == 到 1,所以它返回 1 + anon(9)。
9 % 2 == 1,所以它返回 0。
将所有返回相加得到:1 + 1 + 0 = 2。 我建议研究递归如何与堆栈图一起工作!请注意,您再次调用了 anon() 函数,这就是它继续运行的原因。
