分享

Java 解决 古典问题

 算法与编程之美 2024-05-25 发布于四川

1 问题

编写一个Java程序,解决以下问题:

2 方法

  1. 再导入java.util包下的Scanner类,构建Scanner对象,以便输入。



  2. 通过对问题的分析,我们可以得到,当位数为1时,其返回值为1;

    当位数为2时,其返回值为1;

    当位数为3时,其返回值为1,由此可得这是它们的起始值。

    然后当位数为4时,其返回值为3=2+1;

    当位数为5时,其返回值为5=3+2;

    当位数为6时,其返回值为8=5+3;当位数为7时,其返回值为13=8+5,所以由以上可得,当大于等于3的情况下,当前位数的返回值为:

    f(n)=f(n-1)+f(n-2)。


  3. 输出结果,当位数等于7时,其返回值为13。

public class boke2 {
   public static void main(String[] args) {
       System.out.println("请输入月份:");
       Scanner s = new Scanner(System.in);
       int n = s.nextInt();
       System.out.println("总数:"+"\n"+f(n));
   }
   public static int f(int n){
       if (n!=1&&n!=2){
           if (n!=3){
               return f(n-1)+f(n-2);
           }
           return 2;
       }
       else return 1;
   }
}

3 结语

针对古典问题,首先先通过分析,可以发现此问题的突破口在三个月之后,第一个月和第二个月都是1,从第三个月开始计算第一次出生的兔子数,看出当月份为n时,兔子的对数为前两个之和,所以设对数为f(n),通过编程证明了该方法是有效的,本文的方法只是其中一种,未来可以研究出更多更简洁的方法进行实验。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多