なんとなく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)); } }