python递归的问题
python作业里面的十进制转二进制,我才输入了20,怎么就数据溢出import syssys. setrecursionlimit(10000000)
def nemberx (x):
if x == 0:
return str(x)
else :
str(nemberx(x) % 2) + str(nemberx(x // 2))
报错
>>> nemberx(20)
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
nemberx(20)
File "C:/Users/aizhen/Desktop/python/作品/十进制转二.py", line 8, in nemberx
str(nemberx(x) % 2) + str(nemberx(x // 2))
File "C:/Users/aizhen/Desktop/python/作品/十进制转二.py", line 8, in nemberx
str(nemberx(x) % 2) + str(nemberx(x // 2))
File "C:/Users/aizhen/Desktop/python/作品/十进制转二.py", line 8, in nemberx
str(nemberx(x) % 2) + str(nemberx(x // 2))
MemoryError: Stack overflow
>>>
你的 x 是不是不会变的……{:10_245:} 本帖最后由 hrp 于 2020-5-3 18:51 编辑
造成死循环了,卡在 x=1 出不来,要么超最大递归深度,要么爆内存。等大神给你逐步分析{:10_277:} hrp 发表于 2020-5-3 18:49
造成死循环了,卡在 x=1 出不来,要么超最大递归深度,要么爆内存。等大神给你逐步分析
他的程序是卡在 x=20 了,根本没动过 第七行str(nemberx(x) % 2) + str(nemberx(x // 2))
这里进入member(x)时x并没有变,所以你的递归没有设置返回条件
页:
[1]