tiger吴 发表于 2020-5-25 17:00:52

求解答


result=''
def decbin(n):
   
    if n>0:
      result=result+str(n%2)
      decbin(n//2)
         
n=int(input('hdh'))
decbin(n)
print(result)

……………………………………………………

result=result+str(n%2)
decbin(n//2)
第一行和第二行的顺序,+前面和后面两个参数的位置都对result的结果顺序有影响,理起来好费劲,大佬给我理下思路呗

Twilight6 发表于 2020-5-25 17:03:04

本帖最后由 Twilight6 于 2020-5-25 17:08 编辑

emmm刚刚我说的没理解嘛{:10_245:}

你的代码还是错误的代码{:10_245:}

Twilight6 发表于 2020-5-25 17:05:05

# 假设传入的是10
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))
这样能理解吗? 如果顺序颠倒,我们返回的二进制就错误了
页: [1]
查看完整版本: 求解答