lingedu 发表于 2020-6-7 09:03:56

十进制转2进制递归代码求解?

def dec2bin(x):
    list1 = []
   
    if not x:
      for i in range(len(list1)):
            print(list1,end = '')
      return list1
    else:
      list1.append(x%2)
      return dec2bin(x//2)

dec2bin(123)


想知道哪里出了问题,每次把余数扩展到列表里,直到x为零时,打印列表的值,但是每次打印的 都是空列表,想知道该怎么改?

Twilight6 发表于 2020-6-7 09:07:04

list1相当于在函数中是全局变量,每次递归都会产生新的列表 list1   
来屏蔽外部的全局变量 list1 ,然后你append 是加入局部的变量,而不是原本的全局变量列表

Twilight6 发表于 2020-6-7 09:10:24

本帖最后由 Twilight6 于 2020-6-7 09:12 编辑

list1 = []
def dec2bin(x):


    if not x:
      for i in range(len(list1)):
            print(list1[::-1], end='')
      return list1
    else:
      list1.append(x % 2)
      return dec2bin(x // 2)


dec2bin(123)

lingedu 发表于 2020-6-7 09:20:10

Twilight6 发表于 2020-6-7 09:10


把list设为全局变量呗,是这样吗?

Twilight6 发表于 2020-6-7 09:49:45

lingedu 发表于 2020-6-7 09:20
把list设为全局变量呗,是这样吗?

嗯记得要把列表颠倒
页: [1]
查看完整版本: 十进制转2进制递归代码求解?