Python:递归只有一个输出

Python:递归只有一个输出,python,recursion,Python,Recursion,我想写一个递归函数来拟合曲线。由于某些原因,我的结果看起来不太好,因此我将问题归结为一个简单的例子: Number = 6 Successor = 0 def Fuction(Number, Successor): if (Number - Successor)+1>0: Successor += 1 Fuction(Number, Successor) else: return(Fuction(Number, Successo

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

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}')

当我这样做的时候,内核就死了。我怎样才能修好它?(我跟着雨衣:)

也许是这样的

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=6
succession=7
Fuction(6,7)
一次又一次地调用
Fuction(6,7)
,直到解释器由于其递归限制被超过而崩溃时,问题才会出现。我相信这是当你的内核死亡

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


这里很好地解释了如何实现递归。

“内核死了”--哎呀!你确定这不仅仅是CPython解释器轻轻地抛出错误吗?在这里,您希望得到什么样的输出?为什么要使用递归?为什么要在
if(Number-succession)+1>0
分支中再次调用
Fuction()
?你希望这个函数什么时候停止循环,它应该在那个分支中返回什么?如果“继任者=数字+1”,我希望这个函数停止循环。这也是我真正问题的抽象版本。我只是想知道如何使用return函数,这样输出就会显示:“6的后继函数是7”,我恐怕会问,但是为什么不使用6+1呢?通过使用调试器或添加打印,这里的问题应该非常清楚。您的基本情况应该是
else
分支。“基本情况”的意思是“停止递归”,但在这个分支中,您确实
返回(函数(数字,后继者))
,无限地继续递归。您只需
返回后继者
,然后您的问题就归结为您提供的链接,因为递归分支没有返回任何内容。另外,只有类应该以大写字母开头。惯例是对vars使用小写。再说一次:这是我真正问题的抽象版本。我想创建一个递归函数来拟合数据(不使用lmfit)。我希望我的输出不仅是我打印的东西,而且是我以后可以在代码中使用的东西。当我返回继任者时,当它在else块中时,我得到的是awnser'none',或者是awnser'6的继任者是1'