Rustでフィボナッチ数列を試してみた
ここ数日、Rustを勉強中です。
当初は久しく書いてなかったCかC++を思い出すために再勉強しようかと思っていたのですが、 制御文とか、ポインタ・アドレスとか基本的な所はまだ大丈夫のつもりですが、ANSI関係とかすっかり忘れてしまっているので、 どうせ再スタートするなら最近気になってるモダンなRustを試してみるのもいいなって思いました。
まだRustっぽくないような気がしますが、今のところコレが精一杯です。
orderという変数で指定した数値+1個のフィボナッチ数列を表示します。
順番は逆に出力されてますが、ご愛嬌ということで。。。
以上になります
当初は久しく書いてなかった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)にソースは上げてあります。以上になります




