反復関数を使用してパスカルの三角形を作成する割り当てを完了した後、再帰関数を使用してパスカルの三角形を再作成しようとしました。引数として渡された数値に対応する個々の行を生成できるようになりました。しかし、その行までの三角形全体を生成するためのいくつかの試みは失敗しました。入力番号の範囲を反復処理し、リストに個々の行を追加してリストを返す前に、反復桁を使用して再帰関数を呼び出す別の関数を作成してみました。目的の出力は、各内部リストに三角形の1行が含まれるリストのリストである必要があります。そのようです:
[[1], [1, 1], [1, 2, 1]...]
代わりに、完全に1で満たされたネストされたリストの混乱した混乱を返します。
これが問題の再帰関数であり、行を追加する2番目の関数はありません(とにかく1つのオールインクルーシブ関数が本当に必要でした):
def triangle(n):
if n == 0:
return []
elif n == 1:
return [1]
else:
new_row = [1]
last_row = triangle(n-1)
for i in range(len(last_row)-1):
new_row.append(last_row[i] + last_row[i+1])
new_row += [1]
return new_row
明確にするために、私はすでに割り当てられたタスクを完了しました。これは、再帰のより深い理解を提供するためだけのものです...
反復ソリューション:
def triangle(n):
result = []
for row in range(n):
newrow = [1]
for col in range(1, row+1):
newcell = newrow[col-1] * float(row+1-col)/col
newrow.append(int(newcell))
result.append(newrow)
return result