go语言斐波那契函数,go 斐波那契

go语言 使用递归与循环两种方式计算斐波那契数列

给定一个正整数n计算出对应斐波那契数列对应的值

创新互联建站-专业网站定制、快速模板网站建设、高性价比龙亭网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式龙亭网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖龙亭地区。费用合理售后完善,十年实体公司更值得信赖。

说明:

用mackbookpro i7 2.7GHZ笔记本进行测试,结果如下:

备注: 当n=80时,由于测试等待时间过长,强制中断了执行。

从测试结果看出,当n逐渐增大,递归方式计算斐波拉契数列的时间复杂性急剧增加。当n值较大时可以考虑用循环方式代替。

类似的方式也可以用于,求阶乘、遍历目录、汉诺塔等问题的解决。在后期的文章中,我将这些内容进行补充,敬请期待,谢谢。

定义一个斐波那契函数f(n),输出斐波那契数列的前20项

//#include "stdafx.h"//vc++6.0加上这一行.

#include "stdio.h"

void main(void){

int a,b,i;

for(a=1,b=1,i=0;i20;i++){

printf("%d ",a);

b+=a;

a=b-a;

}

printf("\n");

}

Go语言 斐波那契数列的解法

这么写效率很低,没有剪枝,存在大量的重复计算。

反正你测试用例是有限的,那我骗过你的测试用例就行了啊;)

用递归函数求斐波那契数列的第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语言斐波那契函数,go 斐波那契
网站URL:http://ybzwz.com/article/hccdhp.html