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

递归代码执行两次问题求助:如何终止递归循环使其仅执行一次?

递归执行两次的问题解决

问题原因

你的代码逻辑中,第一次调用my_fun()时,会进入if x ==5分支:打印x is5、修改x为3后递归调用my_fun()。递归的那次调用因为x已经是3,不会进入if分支,直接执行最后的print('x is3')后返回。回到第一次调用的函数上下文,递归执行完后,会继续执行if分支外面的print('x is3'),所以出现了两次打印。

解决方法

方法一:在递归调用后添加返回语句

在if分支的递归调用后加入return,终止当前函数的后续执行,避免执行多余的打印:

x = 5
def my_fun():
    global x

    if x == 5:
        print('x is 5')
        x = 3
        my_fun()
        return  # 终止当前函数,不再执行后续代码

    print('x is 3')

my_fun()

方法二:将打印语句放入else分支

把print('x is3')放到else分支里,确保只有x不等于5时才执行打印:

x = 5
def my_fun():
    global x

    if x == 5:
        print('x is 5')
        x = 3
        my_fun()
    else:
        print('x is 3')  # 仅当x≠5时执行打印

my_fun()

执行结果

两种方法都能得到预期输出:

  • x is 5
  • x is 3

内容的提问来源于stack exchange,提问作者Billah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 21:18:21