古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
从第一个月起数,每月的兔子对数为:1,1,2,3,5,8,13,21,。。。
参考论坛上别的帖子,解法如下:
方法一:
public class Rabit
{
public static void main(String[] args)
{
System.out.println("第1个月的兔子对数: 1");
System.out.println("第2个月的兔子对数: 1");
int f1 = 1, f2 = 1, f, M=24;//f2为每月兔子数,按对计,M是月份,大小可以随便设,但不能设无限大,否则就永远循环下去了
for(int i=3; i<=M; i++)
{
f = f2;
f2 = f1 + f2;
f1 = f;
System.out.println("第" + i +"个月的兔子对数: "+f2);
}
}
}
这种解法就用到一个赋值的动作只需要相互赋值就可以了。
方法二:是建立一个数组如下:
public class huangJinShuLie
{
public static void main(String[] args)
{
//定义一个什么样的方法呢?需要返回值么
//需要返回值int,参数1个?试试先。
int n=11; //设置一个参数测试下这个方法。
System.out.println("第"+n+"个数对应的是"+suiJiShu(n));
} //方法中不能嵌套方法。
public static int suiJiShu( int a)
//方法通过测试。
//这个方法编写跟上个求值一样所以我们复制下
{
int[] A=new int[a];
A[0]=1;
A[1]=1;
int i=0;
for (i=2 ;i < a ;i++ )//先用一个循环给数组赋值
{
A[i]=A[i-1] + A[i-2];
}
return A[a-1];
}
}
这是我改过的。这两种方法那个跟好呢?还有没有跟好的方法来解题???
|