c语言兔子数列函数递归,c语言兔子数列代码

(C语言)用递归方法编写求斐波那契数列的函数

斐波那契数列的定义为:f(n)=f(n-2)+f(n-1)(n1) 其中f(0)=0, f(1)=1

创新互联公司服务项目包括福安网站建设、福安网站制作、福安网页制作以及福安网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,福安网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到福安省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

#includestdio.h

long func(long n)

{

if(n==0||n==1)return n;

else return func(n-1)+func(n-2);

}

main()

{

long n;

printf("please input n:");

scanf("%ld",n);

printf("the result is %ld",func(n));

}

我想用递归写斐波那契数列,c语言

代码:

#includelt;stdio.hgt;

int Fib(int n){//自定义函数

if(nlt;0)

return-1;

else if(n==0)

return 0;

else if(n==1)

return 1;

else

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

}

int main(){

int num;

printf("请输入要求取的第n项斐波那契数列n=");

if(scanf("%d",num)){

if(numgt;=0){

printf("%d",Fib(num));

}

else

printf("Error!!!");

return 0;

}

return 0;

}

扩展资料:

斐波那契数列排列组合

有一段楼梯有10级台阶,规定每一步只能跨一级或两级,要登上第10级台阶有几种不同的走法

这就是一个斐波那契数列:登上第一级台阶有一种登法;登上两级台阶,有两种登法;登上三级台阶,有三种登法;登上四级台阶,有五种登法……

1,2,3,5,8,13……所以,登上十级,有89种走法。

类似的,一枚均匀的硬币掷10次,问不连续出现正面的可能情形有多少种?

答案是(1/√5)*{[(1+√5)/2]^(10+2)-[(1-√5)/2]^(10+2)}=144种。

求递推数列a⑴=1,a(n+1)=1+1/a(n)的通项公式

由数学归纳法可以得到:a(n)=F(n+1)/F(n),将斐波那契数列的通项式代入,化简就得结果。

参考资料:

百度百科——斐波那契数列

C语言递归的方法:有一对兔子,从出生后第3个月起每个月都生一对兔子的问题

可以考虑递归算法:

int Amount(int day)

{

if (day==10)

{

return 1;

}

else

{

return 2*(Amount(day-1)+1);

}

}

早说嘛。。。害的白写了个。。

这题可以多用几个递归函数解决,在这里我称不能生育的兔子为小兔,能生育的为大兔

int littleR(int month)

{

if (month==1)

return 0;

else

return bigR(month-1)+little(month-1);

}

int bigR(int month)

{

if (month==1)

{

return 1;

}

else if (month==2)

{

return 1;

}

else if (month==3)

{

return 1;

}

else

{

return bigR(month-1)+little(month-2);

}

}

int totalR(int month)

{

return littleR(month)+bigR(month);

}

注:这种增长速度的话很快兔子的数量就会增长到很大,所以如果month达到几十的话就会超过int范围,所以可以考虑用__int64代替int,另外到时候如果依然每次都递归的话运行速度也会变慢,可能要好几秒,好几分钟,甚至更长的时间才能算出结果,所以可以考虑用数组存每个递归函数算出的值,如:

littleR(int month)中else可写成

if (...)

{

...

}

else

{

if (a[month]!=0)

return month;

else

return a[month]=bigR(month-1)+little(month-1);

}

用这种方法可以适当提高运行速度。。。

斐波那契数列C语言递归buzhou

楼上说的同时执行,我愚见觉得是不对的。应该是先执行bashan(n-1),然后再执行n-2的那句。两个都是分别执行递归到计算出结果后,相加作为返回值。

也就是类似一个二叉树的先序遍历差不多的感觉。比如说,bashan(4)。执行顺序如下

bashan(4),bashan(3),bashan(2)=2

bashan(2)=2

bashan(4)=2-2=0

如果这里不存在异步多线程之类的操作,就应该从左到右,从上到下,按照顺序完成。

C语言:利用函数递归求斐波那契数列,输出该数列的前17项,每行输出5个数。

#include

#define

COL

5

//一行输出5个

long

fibonacci(int

n)

{

//fibonacci函数的递归函数

if

(0==n||1==n)

{

//fibonacci函数递归的出口

return

1;

}

else

{

return

fibonacci(n-1)+fibonacci(n-2);

//反复递归自身函数直到碰到出口处再返回就能计算出第n项的值

}

}

int

main(void)

{

int

i,n;

n=

17;

printf("Fibonacci数列的前%d项\n",

n);

for

(i=0;

i

{

printf("%-10ld",fibonacci(i++));

//调用递归函数并且打印出返回值

if(i%COL==0)

{

//若对COL取余等于0就换行,也就是控制每行输出多少个,

//而COL=10就是每行输出10个

printf("\n");

}

}

printf("\n");

return

0;

}


文章名称:c语言兔子数列函数递归,c语言兔子数列代码
标题来源:http://scjbc.cn/article/dscigjs.html

其他资讯