首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

新人求帮助,该怎么处理

2013-10-21 
新人求帮助问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔

新人求帮助
问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问某个月的兔子总数为多少? 

大家帮忙看看下面的代码哪里有问题,每次运行输入什么数结果都是1.

新人求帮助,该怎么处理
[解决办法]
这个问题,网上很多办法,我先Copy下方法好了。。
最好用递归解,这道题目考的就是递归

即第三种方法

#include<stdio.h>
void main()
{
    int a[100] ,i,n;
    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++)
{
    m=f2;
    f2+=f1;
    f1=m;

    printf("%d\n",f2);
}

#include <stdio.h>
int rabbit(int n)
{
    if (n<=0)
    {
        printf("error");
        return 0;
    }

    if(n==1
[解决办法]
n==2)
        return 1;
    if (n>2)
       return rabbit(n-1)+rabbit(n-2);
}
void main ()
{
    int n;
        printf("intput month:\n");
        scanf("%d",&n);
        n=rabbit(n);
        printf("%d\n",n);
        


[解决办法]
做了个递归的。

#include <iostream>
using namespace std;

long long func(int start, int end);



int main()
{
cout << "刚开始有1对小兔子。\n";
cout << "小兔子3个月后,每个月生一对小兔子。\n";
cout << "(第4个月就有2对兔子)\n";
cout << "假设所有兔子不死,那么第N个月共有多少对兔子?\n";
cout << "\n输入结束的月份N(从1月开始):";
unsigned int n;
cin >> n;
if (cin && n > 0)
cout << "\n第" << n << "个月,共有" 
 << func(1, n) << "对兔子。\n\n";
else
cout << "输入错误。\n";
system("pause");
return 0;
}

long long func(int start, int end)
{
long long result = 1;
for (int i = start + 3; i <= end; i++)
result += func(i, end);
return result;
}

热点排行