首先回顾一下函数的递归使用,经典习题兔子繁殖,1对兔子三个月后能生下一对兔子,然后第一对兔子可以继续生小兔子,一对生下的小兔子三个月后也能生一对小兔子,兔子对数,1,1,2,3,5,8,13,21,34 ......;请设计程序计算输入的兔子数目,输出最少月数
思路(递归函数):首先这属于斐波那契数列的逆向应用,正常思维计算某个月份的兔子总数比较简单,但这题是指定数目求月数,那我们就想到可以先假设一个月份,然后设计函数求出这个月份对应的兔子数目,再跟我们预期的数目比较,如果数目不够那就增大月份,这样算出的兔子总数也增加了,再用这个数字跟我们最开始设定的数目比较,如果还小那么继续增加月数,一直到得到的兔子数目不小于设定值为止,那么月份不断增加的过程我们就想到了while循环,通过月份自加的过程更新兔子总数,然后循环终止条件刚刚也找到了,就是得到的数字不小于设定值的时候,那么通过一个函数里加入while循环输出月数,再用这个函数调用另一个计算确定月数的兔子数目的函数,基本就解决问题了
#include <stdio.h>
int count(int sum);
int cal(int y);
int main()
{
int n,month;
printf("请输入兔子总数:");
scanf("%d", &n);
month=cal(n);
printf("需要%d月\n", month);
return 0;
}
int cal(int y)
{
int ret=1,sum=1;