递归的执行问题
def Dec2Bin(dec):result = ''
if dec:
result = Dec2Bin(dec//2)
return result + str(dec%2)
else:
return result
这串代码在运行的过程中,为什么不会出现每次都把result赋值为'' 即空字符串的情况? 本帖最后由 昨非 于 2020-12-2 16:13 编辑
向下递归的过程中每一个result都是新的(空的),只存储结果一位
所以每层都要清空
而真正有用的部分已经通过return result + str(dec%2)语句返回给上一层了
而result的结果就是在一层层返回的过程中将每一位用字符串拼接出来的 昨非 发表于 2020-12-2 16:06
运行中result只存储结果一位
所以每层都要清空
而真正有用的部分已经通过return result + str(dec%2)语句 ...
那请问大佬,这串程序的执行顺序是怎么样的呢,我不太明白到底是先把Dec2Bin(dec//2)执行到底,还是执行一个Dec2Bin(dec//2) 就去执行return result + str(dec%2)了。 Siguu 发表于 2020-12-2 16:16
那请问大佬,这串程序的执行顺序是怎么样的呢,我不太明白到底是先把Dec2Bin(dec//2)执行到底,还是执行 ...
先执行到底,在层层返回
然后每一层里都存了一个result+str(dec%2)
返回一层加一个
最后拼到一起就是完整的答案 昨非 发表于 2020-12-2 16:22
先执行到底,在层层返回
然后每一层里都存了一个result+str(dec%2)
返回一层加一个
好的,十分感谢!~ Siguu 发表于 2020-12-2 16:51
好的,十分感谢!~
小事儿,
解决了记得设置最佳答案哈{:10_297:} 昨非 发表于 2020-12-2 16:54
小事儿,
解决了记得设置最佳答案哈
{:10_297:}
页:
[1]