フィボナッチ数列
さて、たまには簡単なプログラミングをしてみます。
私はプログラマではありませんので、何かアプリを作るということは出来ません。
ここでは、フィボナッチ数列をプログラムで表してみたいと思います。
問題:300,000,000 未満で最も大きいフィボナッチ数 Fn を求めてください。 (出典: 広井 誠 さんのサイト)
#!/usr/bin/awk -f BEGIN{ i = 0; while(1){ if(fibo(i) >= 300000000){ break; } i++; } print (i - 1); print (fibo(i - 1)); } function fibo(n){ a1 = 0;a2 = 1; while(n > 0){ temp = a1; a1 = a2; a2 = temp + a2; n--; } return a1; }
ここでは、tempという一時変数を使うのがポイント。
tempを使わず、a2 = a1 + a2
としてしまうと
a2 = a2 + a2
と同じ値になってしまい、正しい答えが出ないので気をつけましょう。
awk -f fibo.awk 42 267914296