前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java 解决 古典问题

Java 解决 古典问题

作者头像
算法与编程之美
发布2024-05-28 21:29:13
770
发布2024-05-28 21:29:13
举报

1 问题

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

2 方法

  1. 再导入java.util包下的Scanner类,构建Scanner对象,以便输入。
  1. 通过对问题的分析,我们可以得到,当位数为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)。
  1. 输出结果,当位数等于7时,其返回值为13。
代码语言:txt
复制
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),通过编程证明了该方法是有效的,本文的方法只是其中一种,未来可以研究出更多更简洁的方法进行实验。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档