Python:只递归一个输出



我想写一个递归函数来拟合曲线。由于某些原因,我的结果看起来不太好,所以我把问题归结为一个简单的例子:

Number = 6
Successor = 0
def Fuction(Number, Successor):
if (Number - Successor)+1>0:
Successor += 1
Fuction(Number, Successor)
else:
return(Fuction(Number, Successor))

A = Fuction(Number, Successor) 
print(f'The Successor of {Number} is {A}')

当我这样做的时候,内核就死了。我该怎么修?(我遵循awnser:为什么我的递归函数不返回(

也许是这样的?

Number = 6
Successor = 0
def Fuction(Number, Successor):
if (Number - Successor) + 1 == 0: # base case for interrupting recursion
return Successor
Successor += 1
return Fuction(Number, Successor)
A = Fuction(Number, Successor) # will be 7
print(f'The Successor of {Number} is {A}')

你也可以这样做,这更类似于你的代码示例:

def Fuction(Number, Successor):
if (Number - Successor) + 1 > 0:
Successor += 1
return Fuction(Number, Successor)
return Successor

这里的问题是递归不会终止。当Number=6Successor=7Fuction(6,7)只是一次又一次地调用Fuction(6,7),直到解释器因超过其递归限制而崩溃时,就会出现此问题。我相信这是当你的内核死的时候。

这里的解决方案是为递归找到正确的基本情况,它可以在不进行另一个递归调用的情况下返回。

这是一个很好的视频,解释了如何实现递归。

相关内容

最新更新