当前位置 : 主页 > 编程语言 > java >

算法练习之兔子数列

来源:互联网 收集:自由互联 发布时间:2021-06-28
Rabbit.java package main;//构建一个兔子的对象public class Rabbit {//记录生日int brithday=1;public Rabbit(int brithday){this.brithday=brithday;}//根据兔子的月数判断是否可以生小兔子public boolean bear(int month)
Rabbit.java
package main;
//构建一个兔子的对象

public class Rabbit {
	//记录生日
	int brithday=1;
	public Rabbit(int brithday){
		this.brithday=brithday;
	}
	//根据兔子的月数判断是否可以生小兔子
	public boolean bear(int month) {
		if((month-brithday)>=2){
			return true;
		}
		else 
			return false;
		
		 
	}
}
RabbitCamp.java
package main;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

//兔子活动类
public class RabbitCamp {
	List
 
   rabbitList;
	
	public RabbitCamp(){	
		init();
	}
	public void init(){
		rabbitList=new ArrayList
  
   (); rabbitList.add(new Rabbit(1));//一月的那一对兔子 } //兔子繁殖 public int Camp(int month){ int m=0; for(m=1;m<=month;m++){ Iterator
   
     it = rabbitList.iterator(); //创建一个兔子队列的迭代器 List
    
      newRabbit = new ArrayList
     
      (); //创建一个新的兔子队列,表示出生的小兔子 while(it.hasNext()){ Rabbit rabbit=(Rabbit)it.next(); if(rabbit.bear(m)){ newRabbit.add(new Rabbit(m)); } } rabbitList.addAll(newRabbit); } return rabbitList.size(); } }
     
    
   
  
 
Main.java
package main;

import java.util.Scanner;

/*题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,
 * 小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
 * 程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... */
//规律 1 1 2 3 5 8 13 21 34 55 89 144
public class Main{
	public static void main(String[] args){
		int rabbitNum=1;
		String[] a = null;
		RabbitCamp rabbitCamp=new RabbitCamp();
		Scanner sc=new Scanner(System.in);
		System.out.println("输入月份(1-12):");
		int num=sc.nextInt();
		if(num>=1&&num<=12){
			rabbitNum=rabbitCamp.Camp(num);
			System.out.println("第"+num+"个月共有"+rabbitNum+"对兔子");
		}else {
			System.out.println("请输入1-12月份");
			main(a);
		}
			
		
		
	}
}
网友评论