递归代码执行两次问题求助:如何终止递归循环使其仅执行一次?
递归执行两次的问题解决
问题原因
你的代码逻辑中,第一次调用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
相关产品推荐
相关产品推荐

