古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少
可以参考这篇文章。 http://www.knowsky.com/889215.html
int age1 = 1;
int age2 = 0;
int age3 = 0;
for(int i=0;i<month;i++){
int tmp = age3;
age3 = age2+age3;
age2 = age1;
age1 = tmp;
System.out.println((age1+age2+age3)*2);
}
public void getResult(int month){
int a=1; //第一个月的对数
int b=1; //第二个月的对数
int sum=0; //month个月后的对数
if(month<3){
return;
}
for(int i=2;i<=month;i++){
sum=a+b;
a=b;
b=sum;
}
System.out.println(month+"个月后,总共有"+sum+"对兔子!");
}
public class xiaotu{
public static void main(String args[]){
System.out.println("请选择功能,功能1:计算各个月的兔子数。功能2:计算到多少月的兔子数。请输入数字选择你要的功能:");
Scanner scan=new Scanner(System.in);
int b=scan.nextInt();
switch(b){
case 1:
int x;
long arr[]=new long[36];
arr[1]=arr[0]=1;
System.out.println("第1个月有1对兔子");
System.out.println("第2个月有1对兔子");
for(x=2;x<=36;x++){
arr[x]=arr[x-2]+arr[x-1];
System.out.println("第"+(x+1)+"个月有"+arr[x]+"只兔子");
}break;
case 2:
int month;
System.out.println("请输入养殖兔子的月份数:");
Scanner in = new Scanner(System.in);
month = in.nextInt();
int sum[]= new int[month] ;
sum[0] = 1;
sum[1] = 1;
for(int i=2;i<month;i++){
sum[i] = sum[i-1]+sum[i-2];
}
System.out.println("第"+month+"个月的兔子总数是:"+sum[month-1]);
}
}
}
望采纳
public class xiaotu{
public static void main(String args[]){
System.out.println("请选择功能,功能1:计算各个月的兔子数。功能2:计算到多少月的兔子数。请输入数字选择你要的功能:");
Scanner scan=new Scanner(System.in);
int b=scan.nextInt();
switch(b){
case 1:
int x;
long arr[]=new long[36];
arr[1]=arr[0]=1;
System.out.println("第1个月有1对兔子");
System.out.println("第2个月有1对兔子");
for(x=2;x<=36;x++){
arr[x]=arr[x-2]+arr[x-1];
System.out.println("第"+(x+1)+"个月有"+arr[x]+"只兔子");
}break;
case 2:
int month;
System.out.println("请输入养殖兔子的月份数:");
Scanner in = new Scanner(System.in);
month = in.nextInt();
int sum[]= new int[month] ;
sum[0] = 1;
sum[1] = 1;
for(int i=2;i<month;i++){
sum[i] = sum[i-1]+sum[i-2];
}
System.out.println("第"+month+"个月的兔子总数是:"+sum[month-1]);
}
}
}
斐波那契数列问题,基本思路是把上一次的结果作为下一次的计算输入因数即可。
兔子问题
public class Domain {
private static ArrayList<Tuzi> tuzis;
public static main(String[] args) {
tuzis = new ArrayList<Tuzi>();
Tuzi t1 = new Tuzi("t1",0);
Tuzi t2 = new Tuzi("t2",0);
tuzis.add(t1);
tuzis.add(t2);
for(int i = 1;i<12;i++){
// 给每个兔子增添年龄
addOneForEvery();
// 通过判断是否增加兔子个数
judgeAddOneTuzi();
System.out.println("第"+i+"个月总共有"+tuzis.size()/2+"对兔子");
}
}
public static addOneForEvery(){
for (int i = 0;i < tuzis.size();i++) {
tuzis.get(i).age += 1;
}
}
public static judgeAddOneTuzi(){
for (int i = 0;i < tuzis.size();i++) {
int a = tuzis.get(i).age ;
if (a > 3) { // 一对兔子生一对,在数量上相当于一只生一只
Tuzi t = new Tuzi("t",0);
tuzis.add(t);
}
}
}
}
class Tuzi {
private String name; // 姓名
private int age; // 年龄
public Tuzi(){
}
public Tuzi(String name,int age) {
this.name = name;
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public String getName(){
return this.name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge(){
return this.age;
}
}
public class ForTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
getResult(1);
}
public static void getResult(int month){
int a=1; //第一个月的对数
int b=1; //第二个月的对数
int sum=1; //month个月后的对数
if(month<3){
sum=1;
}else{
for(int i=3;i<=month;i++){
if(i%2!=0){
sum=2*b;
a=sum;
b=a;
}
}
}
System.out.println(month+"个月后,总共有"+sum+"对兔子!");
}
}