Rustでのフィボナッチ数列の計算方法


まず、シンプルな方法として、再帰関数を使用してフィボナッチ数列を計算することができます。以下に、Rustでの再帰関数を使ったフィボナッチ数列の計算例を示します。

fn fibonacci(n: u32) -> u32 {
    if n == 0 {
        return 0;
    } else if n == 1 {
        return 1;
    } else {
        return fibonacci(n - 1) + fibonacci(n - 2);
    }
}
fn main() {
    let n = 10; // フィボナッチ数列の項数
    for i in 0..n {
        println!("{}: {}", i, fibonacci(i));
    }
}

上記のコードでは、fibonacciという名前の再帰関数を定義し、指定された項数のフィボナッチ数を計算しています。main関数では、10項までのフィボナッチ数列を表示しています。

ただし、この再帰関数の実装は指数的な時間計算量を持ち、大きな数になると非常に遅くなる可能性があります。より効率的な方法として、動的計画法(Dynamic Programming)を用いることができます。以下に、Rustでの動的計画法を使ったフィボナッチ数列の計算例を示します。

fn fibonacci(n: u32) -> u32 {
    let mut fib = vec![0, 1];
    for i in 2..=n {
        fib.push(fib[(i - 1) as usize] + fib[(i - 2) as usize]);
    }
    return fib[n as usize];
}
fn main() {
    let n = 10; // フィボナッチ数列の項数
    for i in 0..n {
        println!("{}: {}", i, fibonacci(i));
    }
}

上記のコードでは、動的計画法を用いてフィボナッチ数列を計算しています。fibという名前のベクターを使い、計算されたフィボナッチ数を保存しています。これにより、再帰関数よりも効率的に計算することができます。

これらのコード例を参考に、Rustでフィボナッチ数列を計算する方法を理解していただければ幸いです。他のアルゴリズムや最適化手法も存在しますが、今回はシンプルな方法と動的計画法を紹介しました。ぜひ実際に試してみてください!