フィボナッチ数列

さて、たまには簡単なプログラミングをしてみます。
私はプログラマではありませんので、何かアプリを作るということは出来ません。
ここでは、フィボナッチ数列をプログラムで表してみたいと思います。

問題: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