快上网专注成都网站设计 成都网站制作 成都网站建设
成都网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

c语言兔子递归函数的例子,兔子C语言

c语言题老师留的 兔子繁殖问题,用递归函数的方法做。 个位大神编一个然后写下答案

斐波那契额数列 问题

创新互联建站专注为客户提供全方位的互联网综合服务,包含不限于网站制作、成都做网站、麻山网络推广、成都小程序开发、麻山网络营销、麻山企业策划、麻山品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联建站为所有大学生创业者提供麻山建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com

#include stdio.h

int fib(int n)

{

if(n==1||n==2)

{

return 1;

}

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

}

int main(void) 

{

printf("%d\n",fib(3));

return 0;

}

c语言题老师留的 兔子繁殖问题,用递归函数的方法做。 个位大神编一个然后写下答案请写上兔子多少只

//兔子的对数,就是Fibonacci数列

//1 1 2 3 5 8 13 21 34 55 89 ...

#include stdio.h

int f(int n)

{

if(n  3)

return 1;

else

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

}

void main()

{

int n;

scanf("%d", n);

printf("%d年后,有兔子%d只.\n", n, 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语言编程:兔子繁殖问题

思路不要乱。这个月的兔子只有两个来源,一个来源是上个月的老兔子,另一个来源是这个月刚出生的兔子,而这个月刚出生的兔子,就是两个月前的所有兔子,因为两个月前的所有兔子,无论两个月前就是老的,还是两个月前刚生的,到了这个月就全部具有生育能力,每只都可以下一对儿,所以可以得到一个递推关系f(n) = f(n - 1) + f(n - 2)。那么程序自然是

long fun(int month)

{

if(month == 1 || month == 2)

return 1;

else

return fun(month - 1) + fun(month -2);

}

// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。

int main()

int Mon;

long Num;

scanf("%d",Mon);

Num = fun(Mon);

printf("第%d月共有兔子%ld只\n",Mon,Num); 

return 0; 

}

至于你的程序,很难把它改正确,因为这题压根不是那个思路,那样想会越想越乱的

C语言中自我递归的几个例子

递归主要元素:入口,递归和结束。在定义递归函数时将这三个元素考虑进去就行;如: double callnext(int n)

{

if(n1) return callnext(n-1)+3;

else return 1;

}

int main()

{

int m;

scanf("%d",m);

printf("result=%f",callnext(m));

return 0;

}

入口:callnext(m);递归:if(n1) return callnext(n-1)+3中的callnext(n-1);结束:else return 1;整个执行流程:callnext(m) 调用 callnext(m-1);callnext(m-1)调用callnext(m-1-1)。。。

callnext(2)调用callnext(1);callnext(1)=1;结束;


分享名称:c语言兔子递归函数的例子,兔子C语言
网页URL:http://6mz.cn/article/phgidc.html

其他资讯