首页 > 代码库 > 简单的递归
简单的递归
好久没刷题,现在看到这道简单的递归竟然卡了下=。=!分析问题的思维!!
Problem Description
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
Input
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。
n=0表示输入数据的结束,不做处理。
Output
对于每个测试实例,输出在第n年的时候母牛的数量。
每个输出占一行。
Sample Input
2
4
5
0
Sample Output
2
4
6
思路分析:
从五年开始,就有小母牛可以生小牛了。分析第N年(N>4)有几只小牛,其实是看第N年年初有几只牛可以生小牛,用第N-1年的数量加上这几只能生小牛的母牛数量就可以得到第N年的母牛总数!而第N年年初能生孩子的母牛,都是3年前就生下来的母牛!于是我们可以得到这样一个递归式:
F(N)=F(N-1)+F(N-3) (N>4)
代码如下:
#include<stdio.h>int main(){ int f[57],n,i; f[0]=1;f[1]=1,f[2]=2;f[3]=3; for(i=4;i<57;i++){ f[i]=f[i-1]+f[i-3]; } while(scanf("%d",&n)!=EOF&&n!=0){ printf("%d\n",f[n]); }}
简单的递归
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。