|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目要求:将参数n分解出每个位的数字并按顺序存放在列表中,例如123 --> [1,2,3]
result = []
def get_digits(n):
if n>0:
result.insert(0,n%10)
get_digits(n//10)
get_digits(123)
print(result)
我的问题是:
递归是从最里面一层算起嘛?就是先算“1”对是取余,得到结果为“1”,再算“2”对10取余,得到结果为“2”,然后再算“3”对“10”取余,得到结果为“3”。
如果是这样,那么insert这个bif从0插入的话,不应该是[3,2,1]嘛?
求大佬说一下运行逻辑!
递归是一步一步进入,进入后在一步一步返回
举个例子,看下 get_digits(123) 的执行顺序吧:
get_digits(123) --> if 123 > 0 --> True --> result.insert(0,123%10) --> get_digits(n//10)
123%10 = 3 插入 result = [] 中得 result = [3]
进入第一次递归:
get_digits(12) --> if 12 > 0 --> True --> result.insert(0,12%10) --> get_digits(12//10)
12%10 = 2 插入 result = [3] 中得 result = [2,3]
进入第二次递归:
get_digits(1) --> if 1 > 0 --> True --> result.insert(0,1%10) --> get_digits(1//10)
1%10 = 1 插入 result = [2,3] 中得 result = [1,2,3]
进入第三次递归:
get_digits(0) --> if 0 > 0 --> False
则最终返回 result = [1, 2, 3]
|
|