|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
m = []
def get_digits(n):
if n//10:
m.append(n%10)
get_digits(n//10)
else:
m.append(n%10)
print(m)
get_digits(1234)
这个得到的结论为什么是
[4, 3, 2, 1]
[4, 3, 2, 1]
[4, 3, 2, 1]
[4, 3, 2, 1]
而不是
[1]
[2, 1]
[3, 2, 1]
[4, 3, 2, 1]
但是
def get_digits(n):
if n//10:
get_digits(n//10)
m.append(n%10)
else:
m.append(n%10)
print(m)
get_digits(1234)
运行结果就是
[1]
[1, 2]
[1, 2, 3]
[1, 2, 3, 4]
- m.append(n%10)
- get_digits(n//10)
-
复制代码
是先把余加在列表后面再调用本身
递归时走到get_digits(n//10)又进入递归
没有机会print
结束后 每退出一层递归print一次
这时候append()已经进行了四次
第一层是1234%10是4
依次append以后是4321
之后再print4次
所以每次print()都是4321
- if n//10:
- get_digits(n//10)
- m.append(n%10)
- else:
- m.append(n%10)
- print(m)
- get_digits(1234)
复制代码
先递归了4次,每退出一层 append一次
然后print 所以最后一层是1234%10等于1
先打印1 后面依次234
|
|