解题思路分享:
1、后续遇到类似的题目,先花点时间总结一下相关规律,推导出robit_calc(x) = robit_calc(x-1) + robit_calc(x-2) 的结论
2、其次你分析题目意思也可以推导得出,这个月的兔子数量= 上个月兔子数量 + 这个月新增的兔子数量(其实也就是 上上个月的兔子数量) 因为两个月前的所有兔子 在本月 都会生兔子。
3、 while循环中 需要设置退出条件,需要判断输入是否为有效数据,否则退出循环。
备注:(如果没有这个判断,会导致程序报错,在实际的代码编写中,同样需要考虑到输入参数可信的问题。)
#include <stdio.h>
unsigned int robit_calc(unsigned int Times) {
if ((Times == 1) || (Times == 2))
return 1;
else
return robit_calc(Times -1) + robit_calc(Times -2);
}
int main(void) {
unsigned int Nums = 0;
unsigned int Times = 0;
//while (scanf("%d", &Times) != EOF) {
while (1) {
if(scanf("%d", &Times) == EOF) break;
Nums = robit_calc(Times);
printf("%d\n", Nums);
}
return 0;
}