2016-12-17 9 views
1

私は現在Pythonで再帰的に作業していますが、私のプロセスは正しいものの、私が望むように私の出力フォーマットは得られません。Pythonで再帰を実装する

def fibonacci(n): 
if n <= 2: 
    return 1 
else: 
    return fibonacci(n-1) + fibonacci(n-2) 

def fibseries(N): 
    if N <= 1: 
     return [] 
    return [fibseries(N-1),fibonacci(N-1)] 
a = fibseries(5) 
print a 

これは私に出力できます:

[[[[[0], 1], 1], 2], 3] 

を私は取得したい:

[0, 1, 1, 2, 3] 

私は思考プロセスを理解する必要があります。

+1

あなたが見たことがありますかhttp://stackoverflow.com/questions/494594/how-to-write-the-fibonacci-sequence-in-python?rq= 1可能な重複 –

+0

あなたは毎回配列を返すように見えますので、入れ子にしてください – Mikkel

+0

http://pythontutor.com –

答えて

1

問題はfibseries、リストを返すことで、fibseries以内にあなたが実行します。

return fibseries(N-1) + [fibonacci(N-1)] 
+0

私は間違いを理解してくれてありがとう、私は与えられたフォーマットで私の結果を得ることができます! – Dante

0

問題はラインreturn [fibseries(N-1),fibonacci(N-1)]である:

return [fibseries(N-1),fibonacci(N-1)] 

あなたはfibonacci出力を連結する必要があります。 fibseriesを呼び出すたびに、リストはリストを返します。この行は2つの要素を持つ新しいリストを作成します。最初のリストはそれ自体がリストです。あなたはそれをreturn [*fibseries(N-1),fibonacci(N-1)]と置き換えることができます。星は最初のリストを展開し、要素を別々に追加します。

関連する問題