我必须编写一个递归函数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)
我是否也可以解释你做了什么,我仍然在学习递归过程中,这会有很大的帮助。感谢。
答案 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