|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1. 写一个函数get_digits(n),将参数n分解出每个位的数字并按顺序存放到列表中。举例:get_digits(12345) ==> [1, 2, 3, 4, 5]
list1 = []
def get(x):
if x > 0:
list1.append(x%10)
return list1 + get(x//10)
else:
return []
print(get(23))
虽然知道这种解题方式有误,但实在是不明白这种解题的结果为啥是[3,2,3,2],已经困扰一整天咯,求大神帮忙
本帖最后由 Twilight6 于 2020-6-4 20:22 编辑
递归过程中也会 返回 list1 两次相加 导致一个函数总共加了两次 列表list1
- list1 = []
- def get(x):
- if x > 0:
- list1.append(x%10) # 第一次未递归 23 % 10 = 3 加入列表中 # 第一次递归 2%10= 2 再次加入列表
- return list1 + get(x//10) # 开始进入第一次递归 x//10=2 则递归get(2) 此时list1 = [3]
- # 开始进入第二次递归,此时 2//10 = 0 执行递归 get(0) 则返回[] 此时列表 list = [3,2]
-
- # 第二次递归结束后 返回 get(0) -> get(2) -> get(23)
-
- # 分别的返回值是 [] -> list1+get(0) -> list1 + get(2) 所以 这里的 list1 加了两次
- else:
- return []
- print(get(23))
复制代码
|
|