递归 -- 兔子繁殖问题

#include <stdio.h>
//兔子繁殖问题
/*
 * 问题描述:
 *  有一对小兔子,从出生起第3个月起每个月都生一对小兔子.
 *  小兔子长到三个月后每个月又生一对兔子,按此规律,设第一个月有一对刚出生的兔子,
 *  问第n个月后有多少对兔子.
 *
 *  1.分析
 *  第一个月-第10个月: 1 1 1 2 3 5 8 13 21 34
 *  2.找规律,发现从第4个月开始 有递推表达式 f(n)=f(n-1)+f(n-2)  n>3
 *
 *  3.确定使用递归解决问题   (你可以理解为这是一个解决递归问题的模板)
 *      1.递归函数定义 int f(int n)
 *      2.递推表达式  f(n)=f(n-1)+f(n-2)
 *      3.递归终止条件   if(n==1||n==2||n==3) return 1;
 *  4.上手写代码
 */
 int f(int n)
{
    if (n==1||n==2||n==3)
        return 1;
    return f(n-1)+f(n-2);
    //调用函数时才是完整的递归表达式,f(int n)=f(n-1)+f(n-2)  ---> f(n)=f(n-1)+f(n-2
}
int main()
{
     int n;
     scanf("%d",&n);
     int i = f(n);
     printf("第%d个月有%d对兔子\n",n,i);
}

 

posted @ 2021-03-31 11:48  nanfengnan  阅读(982)  评论(0)    收藏  举报