栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

求斐波那契数列中第n个数的值

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

求斐波那契数列中第n个数的值

前要:什么是斐波那契数列?

斐波那契数列通俗的讲就是在一串数列中,比如:1,1,2,3,5,8,13,21,34,55......,前两个数的和等于第三个数,反过来说就是任意第三个数是前面两个数相加的和,公式表达式为:n=(n-1)+(n-2)。注意其中n表示在这串数列中第n个数,也就是下标的意思,并不是说这个数是n。相信大家应该明白这个意思了。下面我们运用c语言为大家介绍两个方法:

方法一(函数的递归法)【不建议大家使用这种方法】:

#include 
int add(int x)
{
if(x<=2)
{
return 1;
}
else
return add(x-1)+add(x-2);
}
int main()
{
int n=0,pen=0;
scanf("%d",&n);
pen=add(n);
printf("pen=%d",pen) ;
return 0;
}

在这里我们首先创建一个自定义函数,然后把变量n放入自定义函数中,结合上面的公式:n=(n-1)+(n-2),衍生出:自定义函数(x-1)+自定义函数(x-2),但请大家注意,这样做有一个非常大的缺点就是会产生栈溢出,因为计算机会不断寻找前两个数,每次调用一次自定义函数会重复寻找前两个数,导致计算机运算负荷较大,形成栈溢出,如果n<40还好,计算机能立即运算出来,但是n>40的时候,就要花费大量时间才能运算出来,所以不推荐大家使用这种方法。

方法二:(while循环法)【建议大家使用这种方法】:

#include 
int add(int x)
{
int a=1,b=1,c=1;
if(x<=2)
{
return 1;
}
while(x>2)
{
c=a+b;
a=b;
b=c;
x--;
}
return c;
}
int main()
{
int n=0,pen=0;
scanf("%d",&n);
pen=add(n);
printf("pen=%d",pen);
return 0;
}

这个方法主要是利用while循环,我们先创建一个自定义函数,然后再在自定义函数中创建初始变量a和b,利用这两个循环变量不断相加,得到你想要的这个值。这种算法就比较好,不会产生方法一那样的栈溢出,计算机运算较快,所以建议大家使用这种方法。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/718357.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号