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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 coding_wang 于 2015-9-9 23:44 编辑

我就是按照最简单的思路走,大神打脸请轻拍
--------------------------------~翱~翔~的~分~界~线~-----------------------------------------古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
设 第x个月  有可以生小兔子的大兔子N对,有出生一个月的兔子n1对,有出生两个月的兔子n2对 则整个月的兔子总数SUM_x= N+n1+n2;   下个月的兔子数量SUM_x+1 = (N + n2)+ (N + n2)  + n1 ;再下个月的数量为:SUM_x+2 = N+n2+n1  + (N+n2)+n1 + (N+n2) = SUM_x + SUM_x+1 ;

#include <stdio.h>
int sumOfRabbits ( int n );
void a11()
{
        int n=0;
        printf("请输入查询月数:");
        scanf("%d",&n);
        printf ("第%d个月的兔子总数为:  %d对\n",n,sumOfRabbits(n));
}

int sumOfRabbits ( int n)
{
        int n3,n1,n2;                        // n3表示大于等于三个月大的兔子   n1表示出生一个月的兔子   n2 表示出生两个月的兔子
        n3=0,n1=1,n2=0;
        for(int i=2;i<=n;i++)
        {       
                n3=n3+n2//注意数字的赋值顺序, 这个月的n3会等于上个月的n2 与 n 的和,所以这个月的 n2 不能比这个月的 n3 先赋值
                n2=n1;      //n赋值后   这个月的n2 会等于上月的n1 所以这个月的n1不能比这个月的n2先赋值
                n1=n3;      //这个月n1会等于这个月的n3,所以必须等到这个月的 n3 设置后赋值.
        }
        return (n3+n1+n2);
}

2 个回复

倒序浏览
每次在黑马发帖……光整理版面就够我醉的了……
回复 使用道具 举报
典型强迫症啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马