打印Fibonacci数列方法汇总(前20项,每行5个)

NO.1

迭代法

标签:通俗、易懂

思路:先打印第一项、再在循环里面执行fib=fib1+fib2,把fib2赋给fib1,把fib赋给fib2,每行5个可使用if函数(循环次数对5取余)。

#include <stdio.h>

main()

{

long fib1=0,fib2=1,fib=1;

int i;

printf("%ld\t",fib);

for(i=2;i<=20;i++)

{

fib=fib1+fib2;

printf("%ld\t",fib);

fib1=fib2;

fib2=fib;

if(i%5==0)

printf("\n");

}

getch();

}

NO.2

加减法

标签:代码少,不易理解

思路:

i n fib
1 1 1
2 3 1
3 5 3
4 8 8

每次得出下一个数,再通过赋值赋给fib

#include<stdio.h>
main()
{
   int fib=0,n=1,i;
   for(i=1;i<=20;i++)
   {
      n+=fib;
   fib=n-fib;
   printf("%d\t",fib);
   if(i%5==0)
    printf("\n");
   }
   getch();
}

NO.3

数组法

标签:代码少,最易理解

思路:先打印前两项,后一项等于前两项之和。

#include<stdio.h>
main()
{
 long fib[21];
 int i;
 fib[1]=1;
 fib[2]=1;
 printf("%5ld\t%5ld\t",fib[1],fib[2]);
 for(i=3;i<=20;i++)
 {fib[i]=fib[i-1]+fib[i-2];
 printf("%5ld\t",fib[i]);
 if(i%5==0)
  printf("\n");
 }
 getch();
}

拓展,动态数组法

NO.1动态数组设置方法

#include <stdio.h>
#include <stdlib.h>
main()
{
int num,*p=0,i;
printf("输入数组元素个数:");
scanf("%d",&num);
p=(int*)malloc(sizeof(int)*num);
for(i=0;i<num;i++)
{
scanf("%d",&p[i]);
}
for(i=0;i<num;i++)
{
printf("%d\n",p[i]);
}
}

NO.2

动态数组法的Fibonacci数列

#include <stdio.h>
#include <stdlib.h>
main()
{
int num,*fib=0,i;
printf("输入要显示元素个数:");
scanf("%d",&num);
fib=(int*)malloc(sizeof(int)*num);
fib[1]=1;
fib[2]=1;
printf("%8ld\t%8ld\t",fib[1],fib[2]);
 for(i=3;i<=num;i++)
 {fib[i]=fib[i-1]+fib[i-2];
 printf("%8ld\t",fib[i]);
 if(i%5==0)
  printf("\n");
 }
 getch();
}

相关截图

打印Fibonacci数列方法汇总(前20项,每行5个)打印Fibonacci数列方法汇总(前20项,每行5个)

上一篇:Problem B: Ternarian Weights


下一篇:springMVC中 @RequestParam和@RequestBody的区别