1

非負(> = 0)の整数nをパラメーターとして受け取り、1からnまでの数値の2乗の合計を返す再帰関数sumSquares()を作成する必要があります。例:

>>>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 に答える