今日の内容
- フィボナッチ数列を表示する
- 変数定義
- イミュータブル
- ミュータブル
はじめに
前回はfor文について学びました。今回は、Rustでの変数定義について学びます。また、そのためにフィボナッチ数列を表示するプログラムを作ります。
フィボナッチ?
フィボナッチ数列とは、隣り合う二つの数字が、次の数字になるという次のような数列です。
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,...
今日はこの数列を表示するプログラムを作ります。
変数定義
フィボナッチ数列を表示するプログラムを作るには、変数を二つ用意して、それらを足して使いまわしていきます。
そのために、まずは変数定義について学びます。
Rustでは次のように変数を定義します。
let 変数名 = 値;
ここで注意するべきポイントは、プログラム内で変数を変えることは出来ないということです。Rustでは、デフォルトで変数が 不変(イミュータブル) なのです。
Rustでは「値を変数に束縛する」という表現をしますが、これは、値に名前を付けて使えるようにするという意味です。
Rustで変数を 可変(ミュータブル) にするには、以下のように、letの後にmut(ミュータブル)を付けます。
let mut 変数名 = 値;
変数なのになぜデフォルトで変更できないのか、という疑問は当然のものですが、開発者の「安全性第一」という意思の表れと考えれば納得いきますね。
フィボナッチ数列を表示しよう
以下はRustで31要素までフィボナッチ数列を表示するプログラムです。
fn main(){
let mut a=1;
let mut b=1;
println!("{}", a);
println!("{}", b);
for _ in 1..30{
println!("{}", a+b);
let tmp = a;
a = b;
b = tmp + b;
}
}
/******** 出力結果 *******
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
10946
17711
28657
46368
75025
121393
196418
317811
514229
832040
1346269
*************************/
変数a,bは可変になるため、mut(ミュータブル)で定義しています。
変数tmpはa,bがそれぞれa->b(次の要素に移る),b->a+b(新しい要素は、その前の二つの要素の和)となるので、ここでaを一時的に保存するために定義しています。変数名は「temporary(一時的な)」からきています。
おわりに
おつかれさまでした。今回は、100DaysOfCode 五日目として、フィボナッチ数列を通して変数定義について学びました。次回は変数の「型」について学んでいきます。
ご精読、ありがとうございました。