23.24讲课后题第0题的求助
来位大佬讲解下结果是如何出来的,递归函数返回的是一个另一个递归函数和字符串,怎么打印的结果,最好是每步都讲解下, 本帖最后由 Twilight6 于 2020-8-3 07:19 编辑直接拿实例举例子试试看能不能懂,当我们转化 10 这个数字时候:
def Dec2Bin(dec):
result = '' # 设置个字符串,每次递归都会重新赋值为一个空字符串,所以这个函数每次 result 最多也只会返回一个字符
if dec: # 只要 dec 参数不为 0 ,那么就始终满足 if 条件,进行递归
result = Dec2Bin(dec // 2)
# 这里用了递归 Dec2Bin(10)->Dec2Bin(5)->Dec2Bin(2)->Dec2Bin(1)->Dec2Bin(0)
return result + str(dec % 2)
# 然后开始返回值 Dec2Bin(0)->Dec2Bin(1)->Dec2Bin(2)->Dec2Bin(5)->Dec2Bin(10)
# 返回结果是 '' + '1' + '0' +'1' + '0'
else: # 当 dec 为 0 时,就说明值已经全部求完了,此时直接返回一个 result 作为递归出口
return result
print(Dec2Bin(10)) 请见:https://fishc.com.cn/forum.php?mod=viewthread&tid=167696&ctid=1730 Twilight6 发表于 2020-8-3 00:27
直接拿实例举例子试试看能不能懂,当我们转化 10 这个数字时候:
大佬这里的返回结果为啥是从Dec2bin(0)开始的 而不是从Dec2bin(10)开始的呢 zltzlt 发表于 2020-8-3 06:58
请见:https://fishc.com.cn/forum.php?mod=viewthread&tid=167696&ctid=1730
谢谢大佬 雪蝶宿秋风 发表于 2020-8-3 12:15
大佬这里的返回结果为啥是从Dec2bin(0)开始的 而不是从Dec2bin(10)开始的呢
因为你进入递归 返回时候就要从最里面开始返回,就好比你打开文件夹
Twilight6 发表于 2020-8-3 12:17
因为你进入递归 返回时候就要从最里面开始返回,就好比你打开文件夹
好的 懂了谢谢大佬
页:
[1]