SHgg 发表于 2020-5-12 22:44:59

求助!!走过路过帮个忙

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

print(Dec2Bin(10))
这段代码循环这部分没看懂,能帮忙解释一下吗?谢谢

有谁懂 发表于 2020-5-12 22:56:24

本帖最后由 有谁懂 于 2020-5-12 23:15 编辑

def Dec2Bin(dec):
    result = ''#result 空白字符串

    if dec: #如果dec不是空集,0等为false的值话,执行下面的代码
      result = Dec2Bin(dec // 2)#假设dec=10,则第一次执行Dec2Bin(10)时:dec=5
                                                # 第二次执行Dec2Bin(5)时:dec=2
                                                # 第三次执行Dec2Bin(2)时:dec=1
                                                # 第四次执行Dec2Bin(1)时:dec=0
                                                # 此时不满足if条件,执行else后面的语句返回result的值
      return result + str(dec % 2)
    else:
      return result


print(Dec2Bin(10))
这就是递归结构,最后当第四次执行Dec2Bin(1)时:dec=0,result开始一层层返回结果。

SHgg 发表于 2020-5-12 22:57:21

有谁懂 发表于 2020-5-12 22:56
占楼

只占 不发表下意见吗?{:10_266:}

Twilight6 发表于 2020-5-12 23:05:37

本帖最后由 Twilight6 于 2020-5-12 23:11 编辑

SHgg 发表于 2020-5-12 22:57
只占 不发表下意见吗?

def Dec2Bin(dec):
    result = ''

    if dec:
      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:
      return result


print(Dec2Bin(10))

有谁懂 发表于 2020-5-12 23:13:44

本帖最后由 有谁懂 于 2020-5-12 23:14 编辑

SHgg 发表于 2020-5-12 22:57
只占 不发表下意见吗?

占楼敲代码去了{:10_282:}
大佬讲解等比我生动形象啊,我也才开始学习{:10_250:}
页: [1]
查看完整版本: 求助!!走过路过帮个忙