【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));
    }
全部评论

相关推荐

17 8 评论
分享
牛客网
牛客企业服务