第23讲动动手第一小题:写一个函数get_digits(n),将参数n分解出每个位的数字并按...
result = [] 请问大佬 这里的result不是个全局变量嘛 每次调用函数,result不是应该被清零了吗??def gg(n):
if n > 0:
result.insert(0,n%10)
return gg(n//10)
gg(12345)
print(result)
result = []
def gg(n):
if n > 0:
result.insert(0,n%10)
return gg(n//10)
gg(12345)
print(result)
这里result是全局变量没错,但每次递归调用之后插入一位数,存在列表里,直到所有位数字都被存入
一旦清零,就得不到结果了 本帖最后由 昨非 于 2020-11-19 22:09 编辑
result = []
def gg(n):
if n > 0:
result.insert(0,n%10)#将参数的最后一位插入result列表的第一个位置(前插法)
return gg(n//10)#参数地板除10,相当于去掉最后一位
gg(12345)
print(result)
还有你有一点误区:
请问大佬 这里的result不是个全局变量嘛 每次调用函数,result不是应该被清零了吗??
局部变量(在函数内部)才会在每次调用函数时清零,全局是不受影响的,因为第一行result = [] 只执行一次,
后面的都是函数自己在调用自己(只会给result插入元素,不会再执行第一行了) 昨非 发表于 2020-11-19 22:02
这里result是全局变量没错,但每次递归调用之后插入一位数,存在列表里,直到所有位数字都被存入
一旦 ...
在列表这个容器里,就不会被清0,是这个意思吗?? 奔跑的赵云 发表于 2020-11-19 22:07
在列表这个容器里,就不会被清0,是这个意思吗??
因为第一行代码只执行一次啊,仔细看3楼回复内容 还没解决吗? 昨非 发表于 2020-11-19 22:10
因为第一行代码只执行一次啊,仔细看3楼回复内容
感谢大佬
页:
[1]