Skip to main content
 首页 » 编程设计

Python基础数学算法函数

2025年05月04日12java哥

我试图准确理解这个函数是如何工作的,我一直在尝试它,但我不确定。

  • 据我所知:余数为 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() 函数,这就是它继续运行的原因。