|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
课后作业:利用递归写一个函数get_digits(n),将参数n分解出每个数位的数字并按顺序存放到列表中,如get_digits(12345)——>[1,2,3,4,5]
result = []
def get_digits(n):
if n>0:
result.insert(0,n%10)
get_digits(n//10)
#return result
get_digits(12345)
print(result)
问题是:为什么要把result定义在函数外面?试过定义在函数里面返回result,最后输出结果是[5],这是为什么?
本帖最后由 °蓝鲤歌蓝 于 2020-2-19 17:25 编辑
你的这个递归函数是为了把每一步运行出来的 数字 放入 同一个 列表中。
而你把 result = [] 写里面的话, 每一步运行出来的 数字 放入的都是一个 新的列表
例如: get_digits(n) 放了个 [5], get_digits(n//10) 则放了个 [4], get_digits(n//10//10) 则放了个 [3],它们放的列表不是同一个,因为你在函数里最开始将 result = [] 了, 每个步骤算出来的数字都放在了自己那步的函数定义的 result 里。
也就是说, get_digits(12345) 运行完之后,你以为只是用了一个 result ,其实是使用了 5 个 result。
|
|