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

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

求斐波那契数列中第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,利用这两个循环变量不断相加,得到你想要的这个值。这种算法就比较好,不会产生方法一那样的栈溢出,计算机运算较快,所以建议大家使用这种方法。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5714676.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存