题解 | #统计每个月兔子的总数#

统计每个月兔子的总数

https://www.nowcoder.com/practice/1221ec77125d4370833fd3ad5ba72395

import java.util.Scanner;

// F(i)(总) = F(i)(幼兔1) + F(i)(幼兔2) + F(i)(成兔)
// F(i-1)(总) = F(i-1)(幼兔1) + F(i-1)(幼兔2) + F(i-1)(成兔)
//
// F(i+1)(幼兔2) = F(i)(幼兔1)
// F(i+1)(成兔) = F(i)(幼兔2) + F(i)(成兔)
// F(i+1)(幼兔1) = F(i+1)(成兔) = F(i)(幼兔2) + F(i)(成兔)
//
// F(i)(幼兔2) = F(i-1)(幼兔1)
// F(i)(成兔) = F(i-1)(幼兔2) + F(i-1)(成兔)
//
// F(i+1)(总) = F(i+1)(幼兔1) + F(i+1)(幼兔2) + F(i+1)(成兔)
//            = F(i)(幼兔2) + F(i)(成兔) + F(i)(幼兔1) + F(i)(幼兔2) + F(i)(成兔)
//            = F(i)(总) + F(i)(幼兔2) + F(i)(成兔)
//            = F(i)(总) + F(i-1)(幼兔1) + F(i-1)(幼兔2) + F(i-1)(成兔)
//            = F(i)(总) + F(i-1)(总)
//
// F(i+1)(总) = F(i)(总) + F(i-1)(总)
public class Main {
    // 二维数组
    // public static void main(String[] args) {
    //     Scanner in = new Scanner(System.in);

    //     int n = in.nextInt();

    //     int[][] rabit = new int[n+1][3];
    //     rabit[1][0] = 1;

    //     for(int i=2; i<=n; i++){
    //         // rabit[i][0] = rabit[i-1][2];
    //         rabit[i][1] = rabit[i-1][0];
    //         rabit[i][2] = rabit[i-1][1] + rabit[i-1][2];
    //         rabit[i][0] = rabit[i][2];
    //     }

    //     int result = rabit[n][0]+rabit[n][1]+rabit[n][2];

    //     System.out.print(result);
    // }

    // 递归
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        int n = in.nextInt();

        int result = F(n);

        System.out.print(result);
    }

    private static int F(int month){
        if(month==1 || month==2){
            return 1;
        }
            
        return F(month-1)+F(month-2);
    }
}

全部评论

相关推荐

02-05 08:49
已编辑
武汉大学 Java
野猪不是猪🐗:36k和36k之间亦有差距,ms的36k和pdd的36k不是一个概念
点赞 评论 收藏
分享
01-14 15:08
东南大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务