go语言递归斐波那契数列 go 斐波那契数列

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

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

我们一直强调网站建设、成都网站制作对于企业的重要性,如果您也觉得重要,那么就需要我们慎重对待,选择一个安全靠谱的网站建设公司,企业网站我们建议是要么不做,要么就做好,让网站能真正成为企业发展过程中的有力推手。专业网络公司不一定是大公司,创新互联公司作为专业的网络公司选择我们就是放心。

说明:

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

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

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

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

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

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

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

二、 编写一个递归函数,计算并返回斐波那契数列中第n项的值,斐波那契数列定义如下:

#include

fib(int n)

{if(n==0)return(0);

else if(n==1)return(1);

else

return(fib(n-1)+fib(n-2));

}

main()

{int n,s;

scanf("%d",n);

s=fib(n);

printf("%d\n",s);

}

扩展资料:

scanf用法:

输出的值只是空格前面的字符是因为scanf函数的输入格式错误,输入参数的变量前需要加。

scanf("%s",s);改为scanf("%s",s);

scanf的用法是:scanf("格式控制字符串",输入参数一,输入参数二);

格式控制字符串包含:格式控制说明,普通字符。

1、格式控制字符串表示输入的格式,(int型用%d,float用%f,double型用%lf)

2、普通字符:在输出数据的时候,按照原样输出的字符,如:"fahr=%d,celsius=%d\n"中的fahr=,celsius=。

3、输入的参数是变量的地址,所以要在变量前面加。

用递归法计算斐波那契数列的第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)

用递归方法求斐波那契数列的2,2,4,6,10,16,26,42,68,110······的第10项

方法1:

#include "stdio.h"

int fbnq(int d1,int d2,int n)

{

int k;

if(n3)

{

printf("%d,",d2);

return fbnq(d2,d1+d2,n-1);

}

else

{

printf("%d,",d2);

return d1+d2;

}

}

int main()

{

int d1,d2,n;

d1=2;d2=2;n=10;

/*printf("输入项数:");

scanf("%d",n);printf("输入前两项:");

scanf("%d %d",d1,d2);*/

printf("%d,",d1);

printf("%d",fbnq(d1,d2,10));

}

方法2:

#include "stdio.h"

int fbnq(int d[],int n)

{

int k;

if(n3)

{

printf("%d,",d[0]+d[1]);

d[1]=d[0]+d[1];d[0]=d[1]-d[0];

return fbnq(d,n-1);

}

else

return d[0]+d[1];

}

int main()

{

int d[2],n;

d[0]=2;d[1]=2;n=10;

/*printf("输入项数:");

scanf("%d",n);printf("输入前两项:");

scanf("%d %d",d[0],d[1]);*/

printf("%d,%d,",d[0],d[1]);

printf("%d",fbnq(d,10));

}


本文标题:go语言递归斐波那契数列 go 斐波那契数列
URL链接:http://pwwzsj.com/article/hpiohc.html