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 斐波那契
网站链接:http://scyanting.com/article/hccdhp.html