//fibRec.c -- Fibonacci problem using Recursion // @CopyLeft by tsaiwn@cs.nctu.edu.tw //因為是 recursive version, 當 n 大於 45 之後會等得不耐煩 ! //可以改用 Loop 方式就會很快 ! (see fibLoop.c) #include #include #include long long fib(int n) { if(n<0)return 0; // there is no rabbit if(n<2)return 1; // if(n==0||n==1) return 1; return fib(n-1)+fib(n-2); } int main( ) { int n, i; printf("In \n"); printf(" INT_MAX==%ld\n", INT_MAX); printf(" LONG_MAX==%ld\n", LONG_MAX); printf("0x7fffffffL==%ld\n", 0x7fffffffL); printf(" Note that format specifier for long long !?\n"); printf(" .. different under different compilers!\n"); printf(" 若太快結束, 請輸入大一點的數(如 52 或更大)\n\n"); printf("n= "); scanf("%d", &n); // 注意這樣沒有讀走 NewLine for(i=1; i<= 16; ++i) #ifdef __MINGW32__ printf("Fib of %d=%I64d\n", i, fib(i)); #else printf("Fib of %d=%lld\n", i, fib(i)); #endif printf(" ..."); fflush(stdout); ////////////////////////////////////////////// printf("\n Finding Fib of %d ...", n); fflush(stdout); #ifdef __MINGW32__ printf("\nFib of %d=%I64d\n", n, fib(n)); printf("..under DEV-CPP (MINGW32) \n"); #else #ifdef __TURBOC__ printf("\nFib of %d=%ld\n", n, fib(n)); printf("..under Turbo C++\n"); #else printf("\nFib of %d=%lld\n", n, fib(n)); printf("..under some C/C++ but NOT Dev-c++ \n"); #endif #endif fprintf(stderr, "Hit Enter key.."); getchar( ); // get rid off the new Line when you input n getchar( ); // wait for another NewLine return 0; } /****** D:\testc> path c:\Dec-Cpp\bin;%path% D:\testc> gcc fibRec.c D:\testc> a.exe ******************/