08/02/08 14:51:08
>>54
// 課題3-2を、関数内で完結させるように修正してみた。
#include <stdio.h>
static int fib(int n)
{
static int a[] = {
0, 1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
};
if (n >= sizeof(a) / sizeof(* a) || a[n] == -1) {
a[n] = fib(n - 1) + fib(n - 2);
}
return a[n];
}
int main()
{
for (int n = 0; n <= 40; ++n) {
printf("%d:%d\n", n, fib(n));
}
return 0;
}