题目
有一对兔子,每隔三个月会产下一对小兔子,小免子每隔三个月,也会产生新的小免子,问36个月后,共有多少只兔子求解!

解决方案 »

  1.   

    int Rabbit(int N){if(N==1)return 1;if(N==2)return 1;else if(N>2)return Rabbit(N-2)+Rabbit(N-1);elsereturn -1;}
    调用Rabbit(36)
      

  2.   

                int hare = 2;
                for (int i = 0; i < 36; i++)
                {
                    hare *= 2;
                }
      

  3.   


    public int Fibonacci(int i)
    {
        if(i < 2)
        {
            return 1;
        }
        else
        {
            return Fibonacci(i - 1) + Fibonacci(i - 2);
        }
    }
      

  4.   

    大脑计算机:2乘以(2的12次方)
    每对兔子看成一个单位,开始时有2的0次方对,第1个三月后总共有2的1次方对,第2个三月后总共有2的2次方对......(画出来是个二叉树)36个月除以3总共有12个三月,所以总共有2的12次方对兔子,再乘以2就是兔子个数
    物理计算机:
    调用CreateRabbits(2, 36)即可得到结果private int CreateRabbits(int rabbitNum, int month)
            {
                int totalRabbitNum = 0;            if (month < 0)
                    totalRabbitNum = 0;
                else if (month == 0)
                    totalRabbitNum = rabbitNum;
                else
                {
                    totalRabbitNum = rabbitNum * 2;//等效于totalRabbitNum = rabbitNum + (rabbitNum / 2) * 2
                    totalRabbitNum = this.CreateRabbits(totalRabbitNum, month - 3);
                }            return totalRabbitNum;
            }
      

  5.   

    为了简便起见,突出算法,程序没有做异常处理,如需要,在函数开头加上if (rabbitNum % 2 != 0)
                    throw new ArgumentOutOfRangeException("rabbitNum", "兔子个数必须是2的整数倍");
      

  6.   

    呵呵,失误,附上更正后的代码,至于输出每月兔子对数,方法有很多很多,例如再加一个形参用来递增月数,在函数里输出当前月兔子总数等等private int CreateRabbits(int rabbitNum, int month)
            {
                if (rabbitNum % 2 != 0)
                    throw new ArgumentOutOfRangeException("rabbitNum", "兔子个数必须是2的整数倍!");
                int totalRabbitNum = 0;            if (month < 3)
                    totalRabbitNum = rabbitNum;
                else
                {
                    totalRabbitNum = rabbitNum * 2;//等效于totalRabbitNum = rabbitNum + (rabbitNum / 2) * 2
                    totalRabbitNum = this.CreateRabbits(totalRabbitNum, month - 3);
                }            return totalRabbitNum;
            }
      

  7.   

    csdn果然牛人多呀。 结贴给分了