【C语言编程练习】5.12 兔子产仔问题

1. 题目要求

把一对新生的兔子关在屋子里,已知一对两个月大的兔子以后买一个月可以生一对小兔子,而这一对心生的小兔子初生两个月以后才可以生小兔子,假如一年内没有死亡,一年可以繁殖成多少对?

2. 题目分析

感觉很复杂啊,还是先不去看答案,一般这种问题,我的解决思路都是先老老实实地写前面几个月的,然后找规律

第一个月 1

第二个月 1

第三个月 1+1 2

第四个月 1+1+1 3

第五个月 1+1+1+1+1 5

 

发现这个归纳能力还是很缺乏呢!看了参考答案以后也知道这是斐波拉契数列

哎~

 

3. 代码尝试

 

#include "stdio.h"

int F(int n){

    if(n == 1 || n == 2){

        return 1;

    }else{

        return F(n-1)+F(n-2);

    }

}

int main(){

    int sum=0,i;

    for(i=1;i<=12;i++){

        sum = sum + F(i);

    }

    printf("the answer is %d\n",sum);

    return 0;

}

 

 

但为什么会不对呢?

【犯错原因】为了题目的要求,多次体现累加!但其实F(n-1)+F(n-2)就已经体现了累加的思想了

 

#include "stdio.h"

int F(int n){

    if(n == 1 || n == 2){

        return 1;

    }else{

        return F(n-1)+F(n-2);

    }

}

int main(){

    printf("the answer is %d\n",F(12));

    return 0;

}

 

 

4. 思考

有时候会把事情想复杂,然后出现不必要的“冗余”这其实是非常没有必要的。一定要逻辑清楚呢!

猜你喜欢

转载自www.cnblogs.com/mumutoday/p/10555846.html