keweel 发表于 2017-5-31 16:52:50

关于python课后作业的提问

用递归 十进制转二进制,看了下答案,百度过 看得不是很理解,
      return result + str(dec%2) 这个地方不理解,地板除完之后为什么是从后面的Dec2Bin(1)开始算起?而不是一开始的Dec2Bin(10//2)地板除开始

课程链接:http://bbs.fishc.com/thread-44925-1-1.html

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

print(Dec2Bin(62))

keweel 发表于 2017-5-31 22:18:34

{:10_266:}{:10_266:}{:10_266:}

keweel 发表于 2017-5-31 22:19:03

卡在这里 不知道要不要先挑过这个 继续学习

ButcherRabbit 发表于 2017-6-1 15:35:44

温馨提醒。。别自己坐沙发,抢一楼。。我们都觉得有人回答。。这论坛,回答问题一般都选没有回复的

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

print(Dec2Bin(62))

程序运算是从Dec2Bin(62)开始运算的,但if 62: 是不是符合要求,执行if后面的喽,由于result=Dec2Bin(62//2),返回值又有result,实际就返回

Dec2Bin(62//2)+str(62%2),但Dec2Bin(62//2)未知,又可以计算,程序会默认算出Dec2Bin(62//2)的结果喽,就这样一层套一层,最后有直接结

果,result='',由下往上套return 不就算出Dec2Bin(62)了喽

keweel 发表于 2017-6-2 15:50:41

ButcherRabbit 发表于 2017-6-1 15:35
温馨提醒。。别自己坐沙发,抢一楼。。我们都觉得有人回答。。这论坛,回答问题一般都选没有回复的




有点懂了 THX!
PS:之所以自己又回帖 是因为半天没人回,我怕被刷下去 就自己顶回来了{:5_92:}
页: [1]
查看完整版本: 关于python课后作业的提问