You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

递归函数未正常工作求助:如何实现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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:01:12