go语言 使用递归与循环两种方式计算斐波那契数列
给定一个正整数n计算出对应斐波那契数列对应的值
说明:
用mackbookpro i7 2.7GHZ笔记本进行测试go语言斐波那契数列递归,结果如下:
备注: 当n=80时go语言斐波那契数列递归,由于测试等待时间过长,强制中断了执行。
从测试结果看出,当n逐渐增大,递归方式计算斐波拉契数列的时间复杂性急剧增加。当n值较大时可以考虑用循环方式代替。
类似的方式也可以用于,求阶乘、遍历目录、汉诺塔等问题的解决。在后期的文章中,go语言斐波那契数列递归我将这些内容进行补充,敬请期待,谢谢。
用递归法计算斐波那契数列的第n项
用递归方法计算斐波那契数列的第n项的代码如下:
#include stdio.h
int Fibonacci(int n)
{
if( n == 1 || n == 2) // 递归结束的条件,求前两项
return 1;
else
return Fibonacci(n-1)+Fibonacci(n-2); // 如果是求其它项,先要求出它前面两项,然后做和。
}
int main()
{
int n;
printf("please input n: ");
scanf("%d",n);
printf("Result: %d\n",Fibonacci(n));
return 0;
}
扩展资料一【非递归方式计算斐波那契数列第N项】
#includeiostream
using namespace std;
int Fib(int n)
{
if(n==1 || n==2)
return 1;
int fib1=1;
int fib2=1;
int fib;
for(int i=3; i=n; ++i)
{
fib = fib1 + fib2;
fib2 = fib1;
fib1 = fib;
}
return fib;
}
void main()
{
int n;
cout"input n:";
cinn;
coutFib(n)endl;
}
扩展资料二【斐波那契数列的起源】
由于斐波纳挈数列是以兔子的繁殖引入的数学问题,因此也叫“兔子数列”,指的是这样一个数列:0,1,1,2,3,5,8,13...... 从这组数可以很明显看出这样一个规律:从第三个数开始,后边一个数一定是在其之前两个数的和。
在数学上,斐波纳挈数列可以以这样的公式表示:F(0) = 0,F(1) = 1 ,F(n) = F(n-1) + F(n-2),(n=2)
斐波那契数列递归算法是什么?
斐波那契数列递归算法是斐波那契数列的一种算法,又称为黄金分割数列,其算法规律为F(n)=F(n-1)+F(n-2)。
由于是以兔子的繁殖为例子引入的,因此也叫“兔子数列”。它指的是这样一个数列:0、1、1、2、3、5、8、13……,从这组数可以很明显看出这样一个规律:从第三个数开始,后边一个数一定是在其之前两个数的和。
扩展资料:
斐波那契数列递归的原理:
1、每一级的函数调用都有自己的变量。
2、每一级函数调用都会有一次返回。
3、递归函数中,位于递归调用前的语句和各级调用函数具有相同的执行顺序。
4、递归函数中,位于递归调用后的语句和各级调用函数具有相反的执行顺序。
5、虽然每一级递归都有自己的变量,但是函数代码并不会得到复制。
用递归函数求斐波那契数列的第n项的值
#include stdio.h
int Fibonacci(int n)
{
if( n == 1 || n == 2) // 递归结束的条件,求前两项
return 1;
else
return Fibonacci(n-1)+Fibonacci(n-2); // 如果是求其它项,先要求出它前面两项,然后做和。
}
int main()
{
int n;
printf("please input n: ");
scanf("%d",n);
printf("Result: %d\n",Fibonacci(n));
return 0;
}
在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n=3,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用。
扩展资料:
一个完全是自然数的数列,通项公式却是用无理数来表达的。而且当n趋向于无穷大时,前一项与后一项的比值越来越逼近黄金分割0.618(或者说后一项与前一项的比值小数部分越来越逼近0.618)。
从第二项开始,每个偶数项的平方都比前后两项之积少1,每个奇数项的平方都比前后两项之积多1。
如:第二项1的平方比它的前一项1和它的后一项2的积2少1,第三项2的平方比它的前一项1和它的后一项3的积3多1。
注:奇数项和偶数项是指项数的奇偶,而并不是指数列的数字本身的奇偶,比如从数列第二项1开始数,第4项5是奇数,但它是偶数项,如果认为5是奇数项,那就误解题意,怎么都说不通。
go语言斐波那契数列递归的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于golang斐波那契数列、go语言斐波那契数列递归的信息别忘了在本站进行查找喔。