A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yueyuanlin 中级黑马   /  2014-6-10 00:11  /  1122 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
兔子的规律为数列1,1,2,3,5,8,13,21....*/
  
    这个算法,很多初学者都应该看过了,有个问题是,如果我想随意输入一个月份,然后输出当月的兔子总数时,这个程序该怎么写,有点笨,大家帮帮忙!

评分

参与人数 1黑马币 +3 收起 理由
傘が咲く + 3 加油!

查看全部评分

4 个回复

倒序浏览
#include <stdio.h>  
  
int fun(int n)  // 计算某个月兔子的总数
{        
  
      
    if (n==1 || n==2)   // 一月和2月返回1
        return 1;  
    else  
        return fun(n-1)+fun(n-2);  //用迭代的思想算出某个特定月份兔子的总数并返回
}  
int main()  
{  
    int mouth;  
    printf("你需要查询第几个月兔子数");  
    scanf("%d",&mouth);  // 接收你输入的月份
    fun(mouth);   //  把月份传入fun()函数
    printf("第%d个月兔子数量为:%d对\n",mouth,fun(mouth));  // 输出月份和返回值
    return 0;  
}  

回复 使用道具 举报
豁然!果然c语言还是挺有意思第。谢了~~
  我刚也写了个,就显得菜鸟多了:L
也粘上来看看吧,呵呵!
#include  <stdio.h>
int main ()
{
    int i,f1,f2,month;
    f1=f2=1;//
    printf("请输入您想要查寻的某个月兔子的总数:");
    scanf("%d",&month);//
   
   
    if (month%2==0) {
       for (i=1; i<month/2; i++) {
            f1=f1+f2;
            f2=f1+f2;
        }
          printf("%d\n",f2);
   
    }
    else{
    for (i=1; i<=month/2; i++) {
            f1=f1+f2;
            f2=f1+f2;
        }
        printf("%d\n",f1);
    }
   
   
}
           明显臃肿太多了
回复 使用道具 举报
学习啦。。。
回复 使用道具 举报
你的想法是对的,写的很不错了,但是我猜你没有学过数据结构,想让代码变得整洁就要好好学数据结构,可以让你有更开阔的思维,共勉.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马