Rustでフィボナッチ数列を試してみた

Rust ロゴ
ここ数日、Rustを勉強中です。
当初は久しく書いてなかったCかC++思い出すために再勉強しようかと思っていたのですが、 制御文とか、ポインタ・アドレスとか基本的な所はまだ大丈夫のつもりですが、ANSI関係とかすっかり忘れてしまっているので、 どうせ再スタートするなら最近気になってるモダンなRustを試してみるのもいいなって思いました。

今回はフィボナッチ数列を表示してみます

参考

書いたコードは上記などを参考にして、こんな感じになりました。
まだRustっぽくないような気がしますが、今のところコレが精一杯です。
fn fibonacci(x: i32) -> i32 {
    // matchも使える(select ~ case)
    if x == 0 {
        0
    } else if x == 1 {
        1
    } else {
        fibonacci(x - 1) + fibonacci(x - 2)
    }
}

fn main() {
    // この数値を変更 /////////////////////////////
    let order = 11;  // 何番目(ゼロ基数)
    // ///////////////////////////////////////////
    let mut fibs = vec![];  // 可変の配列 ベクター

    let mut q = order;
    loop {
        fibs.push(fibonacci(q));

        q -= 1;
        if q < 0 {
            break;
        }
    }
    println!("fibonacci {}th number is {:?}.", order + 1, fibs);
    // call_me(add_two);
}

コンパイルと実行

# cargo run
こんな感じで出力されました。
orderという変数で指定した数値+1個のフィボナッチ数列を表示します。
順番は逆に出力されてますが、ご愛嬌ということで。。。
   Compiling fibonacci v0.1.0 (/workspace/fibonacci)
    Finished dev [unoptimized + debuginfo] target(s) in 0.19s
     Running `target/debug/fibonacci`
fibonacci 12th number is [89, 55, 34, 21, 13, 8, 5, 3, 2, 1, 1, 0].
Rustのトレーニング置き場(github)にソースは上げてあります。
以上になります

鹿児島県の出水市という所に住んでいまして、インターネット周辺で色々活動して行きたいと思ってるところです。 Webサイト作ったり、サーバ設定したり、プログラムしたりしている、釣りと木工好きなMacユーザです。 今はデータサイエンスに興味を持って競馬AI予想を頑張ってます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください