Crossin的编程教室

标题: 用递归实现十进制转换二进制程序疑问 [打印本页]

作者: 风风魔王    时间: 2020-3-16 17:10
标题: 用递归实现十进制转换二进制程序疑问
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 循环那里的时候,每次循环居然能把之前的值弹出来,令我很费解,请问下这是什么原因呢?谢谢!



作者: crossin先生    时间: 2020-3-16 22:39
这是递归调用,每次的结果又被作为参数num传递到下一个binnew里面了
作者: 风风魔王    时间: 2020-3-16 23:16
crossin先生 发表于 2020-3-16 22:39
这是递归调用,每次的结果又被作为参数num传递到下一个binnew里面了

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




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5