鱼C论坛

 找回密码
 立即注册
查看: 1445|回复: 17

[已解决]求问这种递归的运算逻辑?

[复制链接]
发表于 2020-4-13 12:14:16 From FishC Mobile | 显示全部楼层
如果我没看错,这样应该就行:
  1. def get_digits(n, /):
  2.     return [int(i) for i in str(n).split()]
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-13 12:22:27 From FishC Mobile | 显示全部楼层
本帖最后由 _2_ 于 2020-4-13 12:25 编辑

def digits(n):
    length = len(str(n))
    list1 = []
    if n >= 10:
        a = n // 10**(length-1)#求首位数
        list1.append(a)
        #问题就在上一行,求出首位数后, list.append() 追加,下一行又减去首位数,再 return 又是一个递归,导致第二位数会被追加到末尾,所以与原数的数字顺序相反

        b = n % 10**(length-1)#减去首位数,余下的数字
        return digits(b)+list1
    else:
        list1.append(n)
        return list1
digits(123)
print(list1)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-13 12:23:03 From FishC Mobile | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-13 12:22
如果我没看错,这样不行

……
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-13 12:24:03 From FishC Mobile | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-13 12:22
如果我没看错,这样不行

你少了一个 .split()
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-13 12:26:58 From FishC Mobile | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-13 12:23
莫名其妙的split

手撸代码不容易啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-6 14:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表