平方递归之和

时间:2012-10-23 03:56:42

标签: python recursion

我必须编写一个递归函数sumSquares(),它将非负(> = 0)整数n作为参数,并返回1和n之间数字的平方和。例如:

>>>sumSquares(2)
5
>>>sumSquares(3)
14

这是我到目前为止所做的:

def sumSquares(n):
    if n==0:
        return 0
    else:
        return sumSquares(n-1)+sumSquares(n-1)

我是否也可以解释你做了什么,我仍然在学习递归过程中,这会有很大的帮助。感谢。

2 个答案:

答案 0 :(得分:3)

不应该是

return n * n + sumSquares(n - 1)

答案 1 :(得分:3)

假设你用S(x)表示你的函数,x> 0

S(x) = 1^2 + 2^2 + ... x^2

这可以写成

S(x) = (1^2 + 2^2 + ...(x-1)^2 )+ x^2

S(x) = S(x-1) + x^2. 

现在为该计划。

def sumSquares(n):
        return sumSquares(n-1)+ n*n

但问题是这不知道什么时候停止。我们必须给出一个基础案例,告诉它何时停止。

你知道S(0)= 0或S(1)= 1。

因此

def sumSquares(n):
    assert n >= 0
    if (n == 0):
        return 0
    else:
        return sumSquares(n-1)+ n*n