递归函数未正常工作求助:如何实现1到6的递增输出?
排查递归代码的输出问题
我来帮你定位代码里的问题,你的递归函数没能按预期输出1到6,主要有两个关键原因:
问题1:没有对var进行赋值操作
你写的var + 1只是执行了加法计算,但没有把计算结果重新赋值给var,所以全局变量var的值始终保持初始的0不变,每次打印自然都是0。
问题2:未声明全局变量(若要修改全局var)
在函数内部如果想要修改全局变量的值,需要先用global关键字声明该变量,否则Python会默认把它当作局部变量处理(虽然这里没报错,但后续如果尝试赋值会触发UnboundLocalError)。
方案1:修复全局变量写法
如果坚持用全局变量实现,可以这样修改代码:
# recursion function var = 0 def recursion_function(n): global var # 声明要使用全局的var if n > 0: var += 1 # 把加法结果赋值回var print(var, end=" ") recursion_function(n-1) recursion_function(6)
这样运行后就能输出1 2 3 4 5 6。
方案2:更推荐的递归参数传递方式
全局变量容易带来副作用,递归的最佳实践是通过参数传递状态,这样代码更清晰、无副作用:
def recursion_function(n, current=1): if current <= n: print(current, end=" ") recursion_function(n, current + 1) recursion_function(6)
这里我们把当前要打印的数值作为参数传递给递归函数,每次递归时让current加1,直到超过n停止,同样能得到预期输出。
内容的提问来源于stack exchange,提问作者iAeE8364.ZG8364
相关产品推荐
相关产品推荐

