题解 | #不死神兔问题#

不死神兔问题

https://www.nowcoder.com/practice/9fecec9c776c436b8a03ba0684ac76a7

#include <iostream>
using namespace std;

int getSum(int n);
static int sum=0;

int main() {

    int n;
    cin >> n;

    cout << getSum(n) << endl;

    return 0;
}

int getSum(int n) {

    // // write your code here......
    // if(n==1||n==2)return 1;
    // int a=1;
    // int b=1;
    // int sum=0;
    // for(int i=3;i<=n;i++){
    //     sum=a+b;
    //     a=b;
    //     b=sum;
    // }
    // return sum;
    if(n<3)return 1;
    int sum=1;
    // for(int i=1;i<n-1;i++){
    //     sum+=getSum(i);
    // }
    for(int i=n-2;i>0;i--){
        sum+=getSum(i);
    }
    return sum;
}

该题有多种解决思路。

1.递归,发现规律是一个斐波那契数列。到n个月的兔子数量=n-1月的数量+n-2前兔子数量(生出的新兔子)

2.迭代,到n个月的兔子数量=n-1月的数量+n-2月兔子数量(每对生出一对新兔子)

3.总的兔子数量=(每对兔子+每对生的数量),以第一对兔子来看。n个月后会生出n-2对兔子+本身自己1对。再进行递归。sum+=getSum(i)

全部评论

相关推荐

learYuan:🐕看了都摇头
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务