Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python基本数学算法函数_Python_Math - Fatal编程技术网

Python基本数学算法函数

Python基本数学算法函数,python,math,Python,Math,我试图确切地理解这个函数是如何工作的,我一直在玩弄它,但我不确定 我所知道的:任何余数为1的奇数都将返回0 我感到困惑的是:当我计算它时,我得到了2,这将导致,但不是'36//2+1'等于'19'而不是'2' 代码: 不,这不是真的,因为anon36/2本身会调用anon,而不是只返回19。不,这不是真的,因为anon36/2本身会调用anon,而不是只返回19。函数告诉你,如果输入是偶数,你可以将一个数除以2的频率,因为它会递归地调用自己,将原始输入的一半除以2。通过在每次递归调用的返回值中添

我试图确切地理解这个函数是如何工作的,我一直在玩弄它,但我不确定

我所知道的:任何余数为1的奇数都将返回0

我感到困惑的是:当我计算它时,我得到了2,这将导致,但不是'36//2+1'等于'19'而不是'2'

代码:


不,这不是真的,因为anon36/2本身会调用anon,而不是只返回19。不,这不是真的,因为anon36/2本身会调用anon,而不是只返回19。函数告诉你,如果输入是偶数,你可以将一个数除以2的频率,因为它会递归地调用自己,将原始输入的一半除以2。通过在每次递归调用的返回值中添加1,它可以有效地计算谁经常调用自己,直到返回0。

函数告诉您,如果输入是偶数,它将使用原始输入的一半递归调用自己,您可以将一个数除以二的频率。通过在每次递归调用的返回值中添加1,它可以有效地统计经常调用自己的用户,直到返回0为止。

让我们看看anon36会发生什么:

36%2不是==到1,因此它返回1+anon18

18%2不是==到1,因此它返回1+anon9

9%2为==1,因此它返回0

将所有收益相加得到:1+1+0=2。
我建议研究递归如何使用堆栈图!请注意,您正在再次调用anon函数,这就是它继续运行的原因。

让我们看看anon36会发生什么:

36%2不是==到1,因此它返回1+anon18

18%2不是==到1,因此它返回1+anon9

9%2为==1,因此它返回0

将所有收益相加得到:1+1+0=2。
我建议研究递归如何使用堆栈图!请注意,您正在再次调用anon函数,这就是它继续运行的原因。

如果跟踪函数调用,您将得到以下结果:

anon(36) # First call, even number = 1
1 + anon(36//2 = 18) # Even number = 1
1 + 1 + anon(18//2 = 9) # Odd number = 0
1 + 1 + 0 = 2 # Returned value

因此,返回值为2。

如果跟踪函数调用,则得到的结果如下:

anon(36) # First call, even number = 1
1 + anon(36//2 = 18) # Even number = 1
1 + 1 + anon(18//2 = 9) # Odd number = 0
1 + 1 + 0 = 2 # Returned value

因此,返回值为2。

因为它计算的是1+anon18,而不仅仅是1+18。您似乎缺少的关键字是递归。anon36>1+anon18>1+1+anon9>1+1+0=2建议您也可以使用调试器,或者尝试使用pythontutor.com之类的工具逐步完成代码流,以防您想了解自己,我准备了一个永久链接:立即查看:因为它正在计算1+anon18,而不仅仅是1+18。您似乎缺少的关键字是递归的。anon36>1+anon18>1+1+anon9>1+1+0=2建议您也可以使用调试器,或者尝试使用pythontutor.com等工具逐步完成代码流,以防您想了解自己,我准备了一个永久链接:立即查看: