とんちゃんといっしょ

Cloudに関する技術とか日常とかについて書いたり書かなかったり

フィボナッチ数列かいてみた

なんとなくJavaで書いてみた。
型宣言がめんどくせー
intでやったらオーバーフローしてマイナスになったし・・・


べた名実装は1の方だけどそれでやると40越えたあたりから反応が鈍くなるので使えない。
というわけでキャッシュを使った2の方がベター。


GAE/JはJavaかいてる気にならんので久しぶりにJava書いたらわけ分からん。
多分この実装はツッコミどころ満載だと思う。

public class Fib {
	private static final int NUMBER = 100;
	private static long[] cache = new long[NUMBER+1];

	public static long fib1(int n){
		if(n == 0 || n == 1) return 1;
		return fib1(n-1) + fib1(n-2);
	}

	public static long fib2(int n){
		if(cache[n] != 0) return cache[n];
		cache[n] = fib2(n-1) + fib2(n-2);
		return cache[n];
	}

	public static void main(String[] args) {
//		System.out.println(fib1(50));

		cache[0] = 1;
		cache[1] = 1;
		System.out.println(fib2(NUMBER));
	}

}