递归问题
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)
这个得到的结论为什么是
而不是
但是
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)
运行结果就是
m = []
def get_digits(n):
if n//10:
m.append(n%10) #加入最后一位(先)
get_digits(n//10) #经过递归调用,从后往前除最后一位已全部加入m中
else:
m.append(n%10)
print(m)
get_digits(1234)
def get_digits(n):
if n//10:
get_digits(n//10) #先递归,再将最后一位加入m中
m.append(n%10)
else:
m.append(n%10) #在“出栈”环节,第一个加入m中的反而是入栈的最后一个
print(m)
get_digits(1234) 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
页:
[1]