题解 | #统计每个月兔子的总数#
统计每个月兔子的总数
https://www.nowcoder.com/practice/1221ec77125d4370833fd3ad5ba72395
#include <stdio.h> int Rabit(int num) { if(num ==2 || num==1){ return 1; } return Rabit(num-1)+ Rabit(num-2); } int main() { int n = 0; scanf("%d",&n); int sum = Rabit(n); printf("%d\n",sum); return 0; } 通过递归的方法来实现,下面说一下思路。 首先明确递归的结束条件,2个月和一个月时兔子的数量都返回1 那么n个月时兔子的数量为多少呢?为n-1个月时兔子的个数加上新生兔子的个数。 那么这个月的新生兔子个数是多少? 通过题目我们可以清楚兔子过2个月才能生小兔子。那么很明显n-2个月时的所有兔子在n个月时都能生小兔子。 n-1个月时的兔子中能生孩子的兔子也就是n-2个月时的兔子的数量,所以新生兔子数量就是n-2个月时兔子的数量。 由此我们的递归思路就很明显了。