【Java 迭代+递归双解法】题解 | #统计每个月兔子的总数#
统计每个月兔子的总数
http://www.nowcoder.com/practice/1221ec77125d4370833fd3ad5ba72395
迭代法
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
int month = scanner.nextInt();
System.out.println(f(month));
}
}
public static int f(int month) {
if (month < 3) {
return 1;
}
// 前两个月的情况已经写出来了,我们从第三个月开始算
int m1 = 0;
int m2 = 1;
int m3 = 0;
for (int i = 2; i < month; i++) {
m3 = m1 + m2;
m2 = m1;
m1 = m3;
}
return m1 + m2 + m3;
}
}
递归法
找规律,累加,斐波那契数列,青蛙跳台阶。递归代码很简单,交给计算机去递归就好了
public static int f(int month) {
if (month < 3) {
return 1;
}
return (f(month-2)+f(month-1));
}