Python return在递归中是如何工作的?
求和所需输出3,4i.e。3+2+1+4必须是10 但获得的产量为5Python 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+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