1

我必须编写一个递归函数 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)

我也可以解释一下您的所作所为,我仍在学习递归,这将有很大帮助。谢谢。

4

2 回答 2

3

那不应该是

return n * n + sumSquares(n - 1)
于 2012-10-23T04:00:12.120 回答
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
于 2012-10-23T04:06:18.970 回答