求助!!走过路过帮个忙
def Dec2Bin(dec):result = ''
if dec:
result = Dec2Bin(dec//2)
return result + str(dec%2)
else:
return result
print(Dec2Bin(10))
这段代码循环这部分没看懂,能帮忙解释一下吗?谢谢 本帖最后由 有谁懂 于 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开始一层层返回结果。 有谁懂 发表于 2020-5-12 22:56
占楼
只占 不发表下意见吗?{:10_266:} 本帖最后由 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:14 编辑
SHgg 发表于 2020-5-12 22:57
只占 不发表下意见吗?
占楼敲代码去了{:10_282:}
大佬讲解等比我生动形象啊,我也才开始学习{:10_250:}
页:
[1]