打印Fibonacci數列方法匯總(前20項,每行5個)


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 }

 

 

相關截圖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM