设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 7989|回复: 2
打印 上一主题 下一主题

用递归实现十进制转换二进制程序疑问

[复制链接]

6

主题

0

好友

218

积分

中级会员

Rank: 3Rank: 3

跳转到指定楼层
楼主
发表于 2020-3-16 17:10:21 |只看该作者 |倒序浏览
def binnew(num):
    binary = []
    if num == 0:
        pass
    else:
        remainer = num % 2
        num //= 2
        binary.append(remainer)
        binnew(num)
     for i in binary[::-1] :
        print(i ,end = '')


写完程序之后发现执行结果是对的,可以打印出转换后的二进制数,但是我仔细分析一下程序,binary = [] 这一句,每次执行的时候都会清零啊,按理说应该打印不出来正确结果的,我单独调试也发现每一步确实清零了,但是执行到for 循环那里的时候,每次循环居然能把之前的值弹出来,令我很费解,请问下这是什么原因呢?谢谢!


回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

沙发
发表于 2020-3-16 22:39:26 |只看该作者
这是递归调用,每次的结果又被作为参数num传递到下一个binnew里面了
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

6

主题

0

好友

218

积分

中级会员

Rank: 3Rank: 3

板凳
发表于 2020-3-16 23:16:05 |只看该作者
crossin先生 发表于 2020-3-16 22:39
这是递归调用,每次的结果又被作为参数num传递到下一个binnew里面了

谢谢先生我懂了,最近刚学到递归感觉有点不好理解
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-5-2 17:00 , Processed in 0.015589 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部