我试图执行递归,但代码运行两次。如何打破递归循环?我希望它只运行一次。有人能帮我一下吗?
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;打印。