执行递归,但代码运行两次



我试图执行递归,但代码运行两次。如何打破递归循环?我希望它只运行一次。有人能帮我一下吗?

x = 5
def my_fun():
global x
if x == 5:
print('x is 5')
x = 3
my_fun()
print('x is 3')
my_fun()

预期输出

  • x is 5
  • x = 3

代码输出

  • x is 5
  • x = 3
  • x = 3

为什么要使用递归?但ok。无论如何,使用参数是比global更好的方法。

def my_fun(x):
if x >= 3:
print(x)
x-=2
my_fun(x)
my_fun(5)

您需要在x!=5时在my_func中使用else以获得预期的输出

>>> x= 5
>>> def func():
...     global x
...     if x ==5:
...             print('x is 5')
...             x = 3
...             func()
...     else:
...             print('x is 3')
... 
>>> func()
x is 5
x is 3
def my_fun():
global x
if x == 5:
print('x is 5')
x = 3
my_fun()
else:
print('x is 3')
my_fun()

在您的初始呼叫中,x = 5和" x = 5 ";是印刷的。X改为3.

然后函数调用自己。

if子句为假,所以只有"x是3"打印。

递归返回,继续初始调用。x = 3;打印。

最新更新