实现求第n个斐波那契数

斐波那契数列:指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368..这个数列从第3项开始,每一项都等于前两项之和

求第n个斐波那契数有很多种方法

1.简单的一种就是:求前两个数时规定输出1,从第三项开始,输出前两项之和,用a1,a2表示,每次加和求出第n值时,将a1,a2向后推移,准备下一项求值

代码如下:

#include<stdio.h>
int main()
{
int n=0;
printf("请输入你想得到第几个菲波那切数:\n");
scanf("%d",&n);
if(n>2)
{
int i=0;
int fit=0;
int a1=1,a2=1;
for(i=3;i<=n;i++)
{
fit=a1+a2;
a1=a2;
a2=fit;
}
printf("%d\n",fit);


}
else
printf("1\n");
    return 0;
}

2.利用数组

#include<stdio.h>
int main()
{
int n=0;
printf("请输入你想得到第几个菲波那切数:\n");
scanf("%d",&n);
if(n>2)
{
int i=0;
int a[100];
for(i=3;i<=n;i++)
{
a[1]=1;
a[2]=1;
   a[i]=a[i-1]+a[i-2];
}
printf("%d\n",a[n]);


}
else
printf("1\n");
    return 0;

}

3.递归

说到递归就要多说一点了,递归对于这类有规律的求和使得程序代码简单利落

什么叫做递归? 程序调用自身的编程技巧就是递归。递归作为一种算法在程序设计语言中广泛应用,一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程中所需要的多次重复计算,大大的减少了程序的代码量。

扫描二维码关注公众号,回复: 3928469 查看本文章

递归的主要思考方式:把大事化小

递归的两个必要条件:1.存在限制条件,当满足这个条件的时候,递归不再继续  2.每次递归调用之后越来越接近这个限制条件

以下是递归求第n个斐波那契数

#include<stdio.h>
int fit(int n)
{
if(n<=2)
return 1;
else
return fit(n-1)+fit(n-2);
}
int main()
{
int n=0;
printf("请输入你想得到第几个斐波那契数:\n");
scanf("%d",&n);
fit(n);
printf("%d\n",fit(n));
return 0;
}

猜你喜欢

转载自blog.csdn.net/sophie1314/article/details/80054461