原来有1对兔子~~3个月后生一对兔子~并且之后每个月都生1对~新生出的兔子也是3个月之后生新兔子~也是3个月之后每月生1对~~~问20个月后有多少对兔子~~~
最好是能写一个可以按照所输入的 月份数 计算兔子 多几种方法最好 能借鉴下
自己想了挺久~~看了下人家用C写的~~~似乎是用递归~~但是刚学JAVA不知道怎么用JAVA表示出那个算法~~菜鸟啊~~~~
最好是能写一个可以按照所输入的 月份数 计算兔子 多几种方法最好 能借鉴下
自己想了挺久~~看了下人家用C写的~~~似乎是用递归~~但是刚学JAVA不知道怎么用JAVA表示出那个算法~~菜鸟啊~~~~
用循环稍微容易懂一点
我把我以前做的代码贴给你public int series(int number)
{
if(num==1)//如果数组长度为1,那么返回1
{
return 1;
}
else if(num<0)//如果数组长度小于0,输出错误,返回-1
{
System.out.println("error");
return -1;
}
else
{
int[] a=new int[number];//定义数组
a[0]=1;
a[1]=1;
for(int i=2;i<a.length;i++)
{
a[i]=a[i-1]+a[i-2];
}
return a[number-1];//返回数组最后一个元素
}
}
规律是这样么?三个月之后才生,我怎么觉得应该是
1 1 1 2 3 4 6 9 13 19 28 41 60
如果是2个月之后,应该是Fibonacci序列,不知道我说的对不对
public class test {
public static long rabbitCounter(int nMonthsLater)
{
if (nMonthsLater < 3) return 1;
return rabbitCounter(nMonthsLater-1) + rabbitCounter(nMonthsLater - 3);
}
public static void main(String[] args){ System.out.println(rabbitCounter(20));
}
}
结果 1278fibonacci序列的递归实现也很简单 public static long fibonacci(int n)
{
if (n< 2) return 1;
return fibonacci(n-1) + fibonacci(n-2);
}
public static void main(String[] args) {
long n = fibonacci(10);
System.out.println(n);
}
public static long fibonacci(int month) {
if(month < 1) {
return 0;
}
double sqrt5 = Math.sqrt(5);
double a = Math.pow((1 + sqrt5) / 2, month);
double b = Math.pow((1 - sqrt5) / 2, month);
double r = (sqrt5 / 5) * (a - b);
return Math.round(r);
}
}
看完了斐波那契数列~~也看懂了~~火龙果大大的~代码了~~~非常感谢~~~但是这个题目好像是 3楼 的逝去日子大大 说的那样哦~~
不过还是学了东西~~~以后碰到就会了 现在在火龙果 大大的基础上写了我想要的东西~~~问题解决了就是开心
import java.util.*;
public class Test5 {
public static void main(String[] args) {
int i;
String amswer;
Scanner sc=new Scanner(System.in);
do{
System.out.println("请输入您所要计算的月份数");
i=sc.nextInt();
long n = fibonacci(i);
System.out.println(n);
System.out.println("是否继续计算:y/n");
amswer=sc.next();
}while (!amswer.equals("n"));
}
public static long fibonacci(int month) {
if(month < 1) {
return 0;
}
double sqrt5 = Math.sqrt(5);
double a = Math.pow((1 + sqrt5) / 2, month);
double b = Math.pow((1 - sqrt5) / 2, month);
double r = (sqrt5 / 5) * (a - b);
return Math.round(r);
}
}
public static void main(String[]args){
int x=1;
int y=1;
System.out.println("1月的兔子对数 "+x);
for(int i=2;i<=20;i++)
{
System.out.println(i+"月的兔子对数"+y);
y=x+y;
x=y-x;
}
}
}不会用类写出来的东西 现在才开始看关于类和对象的东西