鱼C论坛

 找回密码
 立即注册
查看: 576|回复: 4

[已解决]python递归的问题

[复制链接]
发表于 2020-5-3 18:36:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
python作业里面的十进制转二进制,我才输入了20,怎么就数据溢出
import sys
sys. 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))
  [Previous line repeated 7611 more times]
MemoryError: Stack overflow
>>>

最佳答案
2020-5-3 19:58:26
第七行
str(nemberx(x) % 2) + str(nemberx(x // 2))

这里进入member(x)时x并没有变,所以你的递归没有设置返回条件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-3 18:42:07 | 显示全部楼层
你的 x 是不是不会变的……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-3 18:49:36 | 显示全部楼层
本帖最后由 hrp 于 2020-5-3 18:51 编辑

造成死循环了,卡在 x=1 出不来,要么超最大递归深度,要么爆内存。等大神给你逐步分析
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-3 19:00:27 | 显示全部楼层
hrp 发表于 2020-5-3 18:49
造成死循环了,卡在 x=1 出不来,要么超最大递归深度,要么爆内存。等大神给你逐步分析

他的程序是卡在 x=20 了,根本没动过
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-5-3 19:58:26 | 显示全部楼层    本楼为最佳答案   
第七行
str(nemberx(x) % 2) + str(nemberx(x // 2))

这里进入member(x)时x并没有变,所以你的递归没有设置返回条件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-27 03:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表