C++实现两种方式实现斐波那契数列
斐波那契数的规律是从0,1之后的数开始的,也就是说最终数列应该时0,1,1,1,2,3,5,...数据下表是从2开始的及n>2开始的,
1.求斐波那契数某一项的数值(非递归法)
#include <stdio.h>
int digui(int n);
int main(int argc,char *argv[])
{
int n=0;
printf("输入斐波那契数序列的序列号数:");
scanf("%d",&n);
printf("\n");
printf("输出第i个斐波那契数的值:%d",digui(n));
printf("\n");
return 0;
}
int digui(int n)
{
int a0=0,a1=1,a2;
if(n==0)return 0;
if(n==1||n==2)return 1;
while(n-->=2)
{
a2=a0+a1;
a0=a1;
a1=a2;
}
return a2;
}
验证通过。
2.递归法。
#include <stdio.h>
int digui(int n);
int main(int argc,char *argv[])
{
int n=0;
printf("输入序列的下表号:");
scanf("%d",&n);
printf("\n");
printf("输出该序列号的数值:");
printf("%d\n",digui(n));
return 0;
}
int digui(int n)
{
int m;
if(n==0)return 0;
if(n==1||n==2)return 1;
else if(n>2)m=digui(n-1)+digui(n-2);
return m;
}
要实现数列的输出加个for循环即可。