- 180 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 18:20:21 ]
- >>177
#include<stdio.h> #include<stdlib.h> int fib(int i){ static int count; int answer; if(i==0){ int ret=count;count=0;return ret; } if(i <=2){ return 1;} answer = fib(i-1) + fib(i-2); // 3回加算 count+=4; // 1回加算 計4回 return answer; } int fib2(int i){ static int count; int n, fib_n_0=1, fib_n_1=1, fib_n_2=1; if(i==0){ int ret=count;count=0;return ret; } for(n=3;n<=i;n++){ // 1回加算 fib_n_2=fib_n_1+fib_n_0; // 1回加算 fib_n_0=fib_n_1; fib_n_1=fib_n_2; count+=3; // 1回加算 計3回 } return fib_n_2; } int main(int argc, char *argv[]){ int fib_n=20; printf("%d ", fib(fib_n)); printf(" %d\n", fib(0)); printf("%d ", fib2(fib_n)); printf(" %d\n", fib2(0)); return 0; }
|

|