这个简单的代码,问题出在哪里?
def funC(x):print("这个位置的代码被执行了")
while x > 0:
print("我被调用了~")
x -= 1
print(f"此时x的值为{x}")
funC(x) #为什么x < 0 了过后,执行funC(x)还会执行while语句?
#请教下大佬们,这个代码给 x 赋值运行后,为什么会无限循环?
问题出在递归调用的地方。在函数funC中,当x大于0时,会递归调用funC(x-1)。但是在递归调用中,没有判断x是否大于0,导致即使x变为负数,仍然会继续执行while循环,从而陷入无限循环。
解决办法是在递归调用之前,先判断x是否大于0,如果不大于0,则跳出循环,结束当前函数的执行。修改后的代码如下:
def funC(x):
print("这个位置的代码被执行了")
while x > 0:
print("我被调用了~")
x -= 1
print(f"此时x的值为{x}")
if x < 0:
break # 如果x小于0,则跳出循环
funC(x)
这样修改后,当x小于等于0时,函数将不再执行while循环,避免了无限循环的问题。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 楼上是对的,另外你可以改成这样:
def funC(x):
print("这个位置的代码被执行了")
if x > 0:
print("我被调用了~")
x -= 1
print(f"此时x的值为{x}")
funC(x)
页:
[1]