我在研究递归函数。我用Colaboratory运行我的代码。在
为什么使用while profiler函数来增加内存调用的次数?我用一个全局变量来计算函数被调用的次数。在
这是我没有分析器的原始代码:# imports and other things...
accm = 0
def sum_num(n):
global accm
accm += 1
if n == 1:
return 1
return n + sum_num(n - 1)
call_list = []
for i in range(0, 6000, 100):
accm = 0
if i == 0:
i = 1
sum_num(i)
call_list.append(accm)
# visualization things...
并将递归限制设置为10000。在
图形可视化accm从1到6000是线性的:
{1美元^
当我使用剖析器时,我本以为这不会改变,但它确实改变了。在
以下是概要版本:
^{pr2}$
我得到的是一个从1到16000的非线性图;它的最大点大约是20000,它随着噪声线性增加,直到x=25和y=16000,然后随着噪声减小,然后又线性增加:
我想知道为什么会这样,以及如何解决它。在