|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目:写一个函数get_digits(n),将参数n分解出每个位的数字并按顺序存放到列表中。举例get_digits(12345)==>[1,2,3,4,5]
以下是甲鱼哥的答案:运行后结果就是[1,2,3,4,5]
result = []
def get_digits(n):
if n > 0:
result.insert(0, n%10)
get_digits(n//10)
get_digits(12345)
print(result)
我看了后因为对result放在外部 感觉有点疑惑 所以就试了下放里面:
def get_digits(n):
result = []
if n > 0:
result.insert(0, n%10)
get_digits(n//10)
print(result,end=‘’)
get_digits(12345)
按我这样 运行出来的结果是
[][1][2][3][4][5]
是什么原因导致这个输出结果是不一样??
你可以拿纸笔画一画:
def get_digits(n):
result = []
if n > 0:
result.insert(0, n%10)
get_digits(n//10)
print(result,end=‘’)
get_digits(12345)
n=12345 result.insert(0, n%10) 出来的结果是 result =[5] 又递归了个 get_digits(1234)
n=1234 result.insert(0, n%10) 出来的结果是 result =[4](因为一开始函数里有个重置动作result = []) 又递归了个 get_digits(123)
n=123 result.insert(0, n%10) 出来的结果是 result =[3](因为一开始函数里有个重置动作result = []) 又递归了个 get_digits(12)
n=12 result.insert(0, n%10) 出来的结果是 result =[2](因为一开始函数里有个重置动作result = []) 又递归了个 get_digits(1)
n=1 result.insert(0, n%10) 出来的结果是 result =[1](因为一开始函数里有个重置动作result = []) 又递归了个 get_digits(0)
n=0 if n >0: 不成立 直接执行print(result, end='')
n=0 是不是最先执行,所以打印依次是[][1][2][3][4][5] (这个你自己想想哦,有点绕,递归就有点绕)
|
|