割り当てのために、フィボナッチ関数を定義するように求められました。これは次のようにして実現しました。
def fibonacci(n):
if n < 2:
return n
return fibonacci(n-1) + fibonacci(n-2)
ただし、階乗関数などの再帰関数が次のように 1 行の return ステートメントで定義されているのを見たことがあります。
def factorial(n):
return n > 1 and n * factorial(n-1) or 1
そこで、同じことをフィボナッチ関数に適用しようとしました。何度か試行した後、s = 0 の場合を除いて、テストしたすべてのケースで機能するようになりました。この場合、0 を返す必要があるときに False を返します。
def fibonacci(n):
return ((n == 0 or n == 1) and n) or (n > 1 and (fibonacci(n-1) + fibonacci(n-2)))
Python は 0 を False に評価することを理解しています。コードの現在の長さ/構造を維持しながら、n が 0 の場合、Python が False ではなく 0 を返すようにするにはどうすればよいでしょうか? それは可能ですか?
また、関数を作成するこのスタイル(再帰的またはその他)は、教科書バージョンよりも多かれ少なかれ望ましい/ Pythonicですか?(読みやすさのためだけではないと思います)
明確にするために、私は課題の要件を満たしています。個人的な知識としてのみ、返品明細書で何が起こっているかをより明確に理解したいと思います.