白板鱼人 发表于 2020-4-24 21:29:13

python第23/24讲第1题

1. 写一个函数get_digits(n),将参数n分解出每个位的数字并按顺序存放到列表中。举例:get_digits(12345) ==>
result = []
def get_digits(x):
    if x >= 0:
      result.insert(0,x % 10)
      get_digits(x // 10)
number = int(input('请输入数字:'))
get_digits(number)
print(result)
哪里存在问题吗?我感觉跟答案一样啊……为什么会报错呢?
参考答案:
result = []
def get_digits(n):
      if n > 0:
                result.insert(0, n%10)
                get_digits(n//10)

get_digits(12345)
print(result)

老八秘制 发表于 2020-4-24 21:30:07

你应该是递归陷入死循环了吧

qiuyouzhi 发表于 2020-4-24 21:30:14

因为到最后,一定会除到0
你还设了个>=0,肯定会死循环。

永恒的蓝色梦想 发表于 2020-4-24 21:33:47

result = []
def get_digits(x):
    if x > 0:
      result.insert(0,x % 10)
      get_digits(x // 10)

白板鱼人 发表于 2020-4-24 22:08:05

qiuyouzhi 发表于 2020-4-24 21:30
因为到最后,一定会除到0
你还设了个>=0,肯定会死循环。

找到问题啦,把>=改成了>之后正常运行了,谢谢你

白板鱼人 发表于 2020-4-24 22:08:44

老八秘制 发表于 2020-4-24 21:30
你应该是递归陷入死循环了吧

是的……谢谢提示……
页: [1]
查看完整版本: python第23/24讲第1题