小丑9 发表于 2022-2-26 20:42:54

python旧版第23讲的课后题不明白

def Dec2Bin(dec):
    result = ''
   
    if dec:
      result = Dec2Bin(dec//2)
      return result + str(dec%2)
    else:
      return result

print(Dec2Bin(62))


result = Dec2Bin(dec//2)这里不理解,请大佬解释一下

ba21 发表于 2022-2-26 21:35:30

递归2大条件
1, 函数调用自身 。 Dec2Bin(dec//2)
2,结束条件。

大马强 发表于 2022-2-26 21:44:02

你这个要对递归有一个了解
你可以带一个比较小的值进去一步一步拿纸笔算算
我就带个dec = 5
def Dec2Bin(dec):
    result = ''

    if dec: # 当dec = 0 时执行归一
      result = Dec2Bin(dec//2) # 递
      return result + str(dec % 2) # 归二
    else:
      return result # 归一


print(Dec2Bin(5))

"""
第一次进入 Dec2Bin(5)
1递 dec = (5//2) => dec = 2 => 执行 Dec2Bin(2)
2递 dec = (2//2) => dec = 2 => 执行 Dec2Bin(1)
3递 dec = (1//2) => dec = 0 => 执行 归二 => return ''
3归 result = 3递返回值 => result = '' => 归二 => return '' + (1 % 2) =>return '1'
2归 result = 3归二返回值 => result = '1' => 归二 => return '1' + (2 % 2) =>return '10'
1归 result = 2归二返回值 => result = '10' => 归二 => return '10' + (5 % 2) =>return '101'
全部归完输出 101
"""

小丑9 发表于 2022-2-26 22:11:28

大马强 发表于 2022-2-26 21:44
你这个要对递归有一个了解
你可以带一个比较小的值进去一步一步拿纸笔算算
我就带个dec = 5

非常感谢!
页: [1]
查看完整版本: python旧版第23讲的课后题不明白