0

再帰を適切に機能させる方法や、無限に繰り返さないようにする方法がわかりません。これは私がこれまでに持っているものです:

def listSquareR(lst):
    if len(lst)== 1:
        return lst[0]**2
    else:
        return lst[0]**2+[listSquareR(lst[1:])]

最後の戻り行は明らかに間違っています

4

3 に答える 3

1

ほぼ正しいと思いますが、重要なのは自分のタイプに注意することです。あなたのコードで:

def listSquareR(lst):
    if len(lst)== 1:
        return lst[0]**2  # Returning a number
    else:
        return lst[0]**2+[listSquareR(lst[1:])]  # Returning a number plus a list of a list

2 つの小さな修正が必要です。

def listSquareR(lst):
    if len(lst)== 1:
        return [lst[0]**2]  # Returning a list
    else:
        return [lst[0]**2] + listSquareR(lst[1:])  # Returning a list plus a list
于 2014-04-15T00:52:56.877 に答える
1
def SquareArea(width):
if width == 0:
    return 0
else:
    return SquareArea(width-1) + (2*width-1)

これは、正方形の面積を求めるために最近使用した再帰関数です。また、正方形の面積は Side*Side であるため、これを使用して任意の関数の正方形を見つけることができます。あとは、ループを作成するだけです。たとえば、次のようになります。

for i in range (list):

この関数を i に実装するか、while ループを使用することもできます。

newList=[]
length = len(list)
while i != length:
   newList.append(SquareArea(i))

そして、newListを返します

于 2018-03-04T13:24:51.683 に答える