N項のフィボナッチ数列を求める方法


フィボナッチ数列は、前の2つの数の和が次の数になる数列です。例えば、0, 1, 1, 2, 3, 5, 8, 13, 21, ...と続きます。ここでは、N項のフィボナッチ数列を求めるいくつかの方法とコード例を紹介します。

  1. 反復を使った方法: フィボナッチ数列は反復的な性質を持っているため、ループを使って効率的に計算することができます。以下は反復を使った方法のコード例です。
def fibonacci_iterative(n):
    if n <= 0:
        return []
    elif n == 1:
        return [0]
    elif n == 2:
        return [0, 1]

    fib_seq = [0, 1]
    for i in range(2, n):
        fib_seq.append(fib_seq[i-1] + fib_seq[i-2])

    return fib_seq
  1. 再帰を使った方法: フィボナッチ数列は再帰的な性質を持つため、再帰関数を使って計算することもできます。以下は再帰を使った方法のコード例です。
def fibonacci_recursive(n):
    if n <= 0:
        return []
    elif n == 1:
        return [0]
    elif n == 2:
        return [0, 1]

    fib_seq = fibonacci_recursive(n - 1)
    fib_seq.append(fib_seq[-1] + fib_seq[-2])

    return fib_seq
  1. 動的計画法を使った方法: 動的計画法を使うと、計算済みの値を保存して再利用することができます。これにより、再帰のオーバーヘッドを削減することができます。以下は動的計画法を使った方法のコード例です。
def fibonacci_dynamic(n):
    if n <= 0:
        return []
    elif n == 1:
        return [0]
    elif n == 2:
        return [0, 1]

    fib_seq = [0, 1]
    for i in range(2, n):
        fib_seq.append(fib_seq[i-1] + fib_seq[i-2])

    return fib_seq

これらの方法は、異なるアプローチでフィボナッチ数列を計算するためのコード例です。選択する方法は、特定の要件や制約に応じて異なる場合があります。