C语言递归的方法:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问36个月的兔子总数为多少?请一定要递归的方法.网上的三个方法我也查过.谢谢了.
#include <stdio.h>
//假设不溢出
int fibonacci(int month)
{
int num,num1=1,num2=1;
int i;
if(month < 1) {
printf("error!\n");
return -1;
}
if((month == 1) || (month == 2)) {
return 1;
} else {
/* 迭代法,降低时间复杂度和空间复杂度。*/
for(i=2; i<month; i++) {
num = num1 + num2;
num1 = num2;
num2 = num;
}
}
return num;
}
int main(void)
{
int num = 0, ret = 0;
printf("请输入月数:\n");
scanf("%d", &num);
ret = fibonacci(num);
printf("兔子的对数:%d\n", ret);
return 0;
}
请问..这个方法是用的递归的方法吗?
追答//下面这个就是递归函数,feibo自己调用自己。
//楼主太跨张了!
int feibo(int n)
{
if(n==1||n==2) return 1;
else return feibo(n-1)+feibo(n-2);
}
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到...
printf("请输入月数:\\n");scanf("%d",&n);a[0]=a[1]=1;for(i=2;i<n;i++)a[i]=a[i-1]+a[i-2];printf("%d\\n",a[n-1]);} include<stdio.h> void main(){ long f1,f2;int i,n,m;f1=f2=1;printf("输入月数:\\n");scanf("%d",&n);for(i=3;i<=n;i++)...
c语言高手急救:有一对兔子,从出生第3个月起每个月都生一对兔子……
int f(int n){ if(n==1||n==2)return 1; else return f(n-1)+f(n-2);}void main(void){ int n; cout<<"输入n:"; cin>>n; cout<<f(n)<<"对"<<endl;}
c语言100道题中,兔子生兔子程序怎么理解
输入要计算的月数:1010个月的兔子总数为55递归看上去非常符合逻辑,但是这种递归效率是非常慢的,不信你计算20, 30, 40 个月的兔子数试试,明显比另外两种方法慢多了,具体分析请看:C语言用递归求斐波那契数,让你发现递归的缺陷和效率瓶颈【代码三】使用数组 include<stdio.h>void main(){ in...
...有一对兔子,从出生后第3个月起每个月都生一对
这道题目考察的是运用递归(数列)的思路去解决问题。假设到第24个月,示例代码如下:public class woo { public static void main(String args[]) { System.out.println(fib(24));} private static int fib(int n) { if (n == 1 || n == 2) { return 1;} else { return fib(n - ...
C语言问题
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月 后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21... 2.程序源代码: main() { long f1,f2; int i; f1=f2=1; for(i=1;i<=20;i++...
在C语言中,什么是迭代法?
分析:这是一个典型的递推问题。我们不妨假设第 1 个月时兔子的只数为 u 1 ,第 2 个月时兔子的只数为 u 2 ,第 3 个月时兔子的只数为 u 3 ,……根据题意,“这种兔子从出生的下一个月开始,每月新生一只兔子”,则有u 1 = 1 , u 2 = u 1 + u 1 × 1 = 2 , u 3 = u 2 + u 2 ...
VB中判断闰年和判断水仙花数的程序是什么?
【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21...【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。1....
C语言编程:兔子繁殖问题
思路不要乱。这个月的兔子只有两个来源,一个来源是上个月的老兔子,另一个来源是这个月刚出生的兔子,而这个月刚出生的兔子,就是两个月前的所有兔子,因为两个月前的所有兔子,无论两个月前就是老的,还是两个月前刚生的,到了这个月就全部具有生育能力,每只都可以下一对儿,所以可以得到一...
C语言的兔子问题
\/\/通过递归调用可以实现 \/\/希望我的回答对你有帮助,呵呵 include <stdio.h> int fun(int);int main(){ int n;scanf("%d",&n);for(int i=1;i<=n;i++){ printf("%-4d",fun(i));} printf("\\n");return 0;} int fun(int i){ if(i==1||i==2)return 1;else return fun...
c语言编程,求兔子问题。
{\/\/第n年x岁的兔子数是第n-1年x-1岁兔子的数量 \/\/ a[x] a[x-1]for(j=5;j>0;j--)a[j] = a[j-1];\/\/7岁的就会死掉,直接丢弃 \/\/到3岁就可以生一对,所以从3(数组从0开始,故这里是2)加到6 a[0] = a[2] + a[3] + a[4] + a[5];} return (a[0] ...