Java 解决 古典问题

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),通过编程证明了该方法是有效的,本文的方法只是其中一种,未来可以研究出更多更简洁的方法进行实验。

</mp-style-type

原创文章,作者:速盾高防cdn,如若转载,请注明出处:https://www.sudun.com/ask/77269.html

Like (0)
速盾高防cdn的头像速盾高防cdn
Previous 2024年5月25日
Next 2024年5月25日

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注