标签:递归 integer border adl article NPU count int return
有一兔子,从出生后第3个月起每个月都生一兔子, 小兔子长到第三个月后每个月又生一对兔子 ,假如兔子都不死,问每个月的兔子总数为多少?
月份 |
兔子数 |
分析 |
1 | 1 | f(1)=1 |
2 | 1 | f(2)=1 |
3 | 1+1 | f(3)=2 |
4 | 1+1 +1 | f(4)=3 |
5 | 1+1+1 +1+1 | f(5)=5 |
6 | 1+1+1+1+1 +1+1+1 | f(6)=8 |
7 | 1+1+1+1+1+1+1+1 1+1+1+1+1 | f(7)=13 |
.... | .... | ... |
总结 | 1,1,2,3,5,8,13.... | f(n)=f(n-1)-f(n-2) |
初步分析可知,该问题可用递归方式解决;
import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String line = ""; while((line = br.readLine())!= null){ int monthCount = Integer.parseInt(line); System.out.println(getTotalCount(monthCount)); } } public static int getTotalCount(int monthCount){ if(monthCount<3){ return 1; } return getTotalCount(monthCount-1)+getTotalCount(monthCount-2); } }
标签:递归 integer border adl article NPU count int return
原文地址:https://www.cnblogs.com/weixiaotao/p/12543011.html