各位友友们,不妨动动小手点点赞,一定会很感激你们的~
一、斐波那契数列是什么?
示例诸如一段数列 1 1 2 3 5 8 13……,第三位开始每一位的数都是前两位数之和,2=1+1;3=2+1;5=3+2等等。
二、编写程序
1.引入代码
#include <stdio.h>//编写函数,输入n,fib函数输出第n项斐波那契。1 1 2 3 5 8 13 21……
int fib( int n );
int main()
{
int n;
printf("请输入斐波那契数列的项数:");
scanf("%d", &n);
printf("第n项斐波那契数:%d\n", fib(n));
return 0;
}
int fib(int n)
{ int i;
int x=1,y=1,z;
if(n<=2)
return 1;//
for(i=2;i<n;i++)//循环次数为n-2;
{
z=x+y;x=y;y=z;}//不可调换顺序,数列从右往左推进
return z;
}
2.输入数值
7
3.输出数值
13
第二种方法,运用整型变量来存放数值。
二.编写代码
#include <stdio.h>//编写函数,输入n,fib函数输出第n项斐波那契。1 1 2 3 5 8 13 21……
int fib( int n );
int main()
{
int n;
printf("请输入斐波那契数列的项数:");
scanf("%d", &n);
printf("第n项斐波那契数:%d\n", fib(n));
return 0;
}
int fib(int n)
{
int s[n];//用n做序号,则数组长度随之更改
s[1]=s[0]=1;
int i;
if(n<=2)
return 1;
for(i=2;i<n;i++)//循环次数为n-2
{
s[i]=s[i-1]+s[i-2];}
if(n>2)
return s[i-1];//因为i++,所以返回序号减一
}