递归小练习的问题
题目要求:将参数n分解出每个位的数字并按顺序存放在列表中,例如123 -->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插入的话,不应该是嘛?
求大佬说一下运行逻辑! 你自己看一下你的程序撒
很明显是先insert,然后再递归的嘛。也就是一层一层深入的。
若想从最里面一层算起,那么把if后的这两行换一下位置,那么就是先进入递归,然后再回来计算了 先123%10 = 3insert后 result =
12%10 = 2insert后 result =
1%10 = 1insert后 result =
想要3,2,1 用append 或者 insert一个大于等于你期望数组长度的值 如result.insert(3,n%10)
递归是从最里面一层算起嘛?
递归是一步一步进入,进入后在一步一步返回
举个例子,看下 get_digits(123) 的执行顺序吧:
get_digits(123) --> if 123 > 0 --> True --> result.insert(0,123%10) --> get_digits(n//10)
123%10 = 3 插入 result = [] 中得result =
进入第一次递归:
get_digits(12) --> if 12 > 0 --> True --> result.insert(0,12%10) --> get_digits(12//10)
12%10 = 2 插入 result = 中得result =
进入第二次递归:
get_digits(1) --> if 1 > 0 --> True --> result.insert(0,1%10) --> get_digits(1//10)
1%10 = 1 插入 result = 中得result =
进入第三次递归:
get_digits(0) --> if 0 > 0 --> False
则最终返回 result =
页:
[1]