Python return在递归中是如何工作的?

Python return在递归中是如何工作的?,python,recursion,Python,Recursion,求和所需输出3,4i.e。3+2+1+4必须是10 但获得的产量为5 请了解返回值的实际工作原理?如果您打算像3+2+1+4那样求和,此代码将起作用 def sum_it(n,y): if n ==0: return y else: return sum_it(n-1,n+y) 例如,sum_it3,4的工作原理如下 def sum_it(n,y): if( n == 1): return y + 1 else:

求和所需输出3,4i.e。3+2+1+4必须是10 但获得的产量为5


请了解返回值的实际工作原理?

如果您打算像3+2+1+4那样求和,此代码将起作用

def sum_it(n,y):
if n ==0:
    return y 
else:
    return sum_it(n-1,n+y)
例如,sum_it3,4的工作原理如下

def sum_it(n,y):
    if( n == 1): 
        return y + 1
    else:         
        return(n + sum_it(n-1,y))
这意味着

sum_it(3,4) returns 3 + sum_it(2,4)
sum_it(2,4) returns 2 + sum_it(1,4)
sum_it(1,4) returns 1 + 4

虽然还不清楚,但在调用sum_itn时似乎需要的是,y是从1到n再加上y的自然数之和

这个初始和也称为第n个三角形数

如果是这种情况,实际上不需要递归:

sum_it(3,4) returns 3 + 2 + 1 + 4
如果必须使用递归:

def sum_it(n,y):
    return (n*(n+1))//2 + y

如果还有疑问,请随时询问。

为什么总和3,4的输出必须为10?你所做的就是返回1+y,所以我希望它返回5。。。求和函数将返回n+y,不需要递归。在递归中,return的工作方式没有什么不同;它停止重新调用sum_it,因为输入的是if条件而不是else条件。我想将y添加到序列中,即3+2+1+4Ok,根据您的注释,我在返回参数中添加了n+。
def sum_it(n,y):
    if (n > 1):
        return n + sum_it(n-1,y)
    return n + y