NO.1
迭代法
標簽:通俗、易懂
思路:先打印第一項、再在循環里面執行fib=fib1+fib2,把fib2賦給fib1,把fib賦給fib2,每行5個可使用if函數(循環次數對5取余)。
1 #include <stdio.h> 2 main() 3 { 4 long fib1=0,fib2=1,fib=1; 5 int i; 6 printf("%ld\t",fib); 7 for(i=2;i<=20;i++) 8 { 9 fib=fib1+fib2; 10 printf("%ld\t",fib); 11 fib1=fib2; 12 fib2=fib; 13 if(i%5==0) 14 printf("\n"); 15 } 16 getch(); 17 }
NO.2
加減法
標簽:代碼少,不易理解
思路:
| i | n | fib |
| 1 | 1 | 1 |
| 2 | 3 | 1 |
| 3 | 5 | 3 |
| 4 | 8 | 5 |
每次得出下一個數,再通過賦值賦給fib
1 #include<stdio.h> 2 main() 3 { 4 int fib=0,n=1,i; 5 for(i=1;i<=20;i++) 6 { 7 n+=fib; 8 fib=n-fib; 9 printf("%d\t",fib); 10 if(i%5==0) 11 printf("\n"); 12 } 13 getch(); 14 }
NO.3
數組法
標簽:代碼少,最易理解
思路:先打印前兩項,后一項等於前兩項之和。
1 #include<stdio.h> 2 main() 3 { 4 long fib[21]; 5 int i; 6 fib[1]=1; 7 fib[2]=1; 8 printf("%5ld\t%5ld\t",fib[1],fib[2]); 9 for(i=3;i<=20;i++) 10 {fib[i]=fib[i-1]+fib[i-2]; 11 printf("%5ld\t",fib[i]); 12 if(i%5==0) 13 printf("\n"); 14 } 15 getch(); 16 }
拓展,動態數組法
NO.1動態數組設置方法
1 #include <stdio.h> 2 #include <stdlib.h> 3 main() 4 { 5 int num,*p=0,i; 6 printf("輸入數組元素個數:"); 7 scanf("%d",&num); 8 p=(int*)malloc(sizeof(int)*num); 9 for(i=0;i<num;i++) 10 { 11 scanf("%d",&p[i]); 12 } 13 for(i=0;i<num;i++) 14 { 15 printf("%d\n",p[i]); 16 } 17 }
NO.2
動態數組法的Fibonacci數列
1 #include <stdio.h> 2 #include <stdlib.h> 3 main() 4 { 5 int num,*fib=0,i; 6 printf("輸入要顯示元素個數:"); 7 scanf("%d",&num); 8 fib=(int*)malloc(sizeof(int)*num); 9 fib[1]=1; 10 fib[2]=1; 11 printf("%8ld\t%8ld\t",fib[1],fib[2]); 12 for(i=3;i<=num;i++) 13 {fib[i]=fib[i-1]+fib[i-2]; 14 printf("%8ld\t",fib[i]); 15 if(i%5==0) 16 printf("\n"); 17 } 18 getch(); 19 }
相關截圖


