`
hongboyongqi
  • 浏览: 3856 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java练习 经典的兔子问题

    博客分类:
  • J2EE
阅读更多
好久没写Java代码,太生疏了。找些练习做做,温故而知新 - 递归很实用。

package edu.rob.prac;

import java.util.LinkedList;

/**
 * 
 * 【程序1】 
 *  题目:古典问题:有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一
 *  只兔子,假如兔子都不死,问每个月的兔子总数为多少? 
 *
 */

public class Practice_001 {

	public static void main(String[] args) {
		
		// Check each amount of all rabbits for the 1st to 10th month 
		for(int currentMonth=1; currentMonth<=10; currentMonth++) {
			
			Rabbit r = new Rabbit(1);
			r.setDirectChildren(currentMonth);
			
			System.out.println("The " + currentMonth + " Month :	" + r.getFamilyMemebersAmt());
		}
		
	}

}

class Rabbit {
	
	private int birthday;
	private LinkedList<Rabbit> directChildren = new LinkedList<Rabbit>();
	
	public Rabbit() {}

	public Rabbit(int birthday) {
		this.birthday = birthday;
	}

	// Set direct children base on current month and birthday of this rabbit
	public void setDirectChildren(int currentMonth) {

		Rabbit r;
		int month = currentMonth;
		
		// Add direct children if it has
		while ( month - this.birthday > 1) {
			r = new Rabbit(month);
			r.setDirectChildren(currentMonth);
			this.directChildren.add(r);
			month--;
		}
		
	}
	
	// get amount of all children and this rabbit 
	public int getFamilyMemebersAmt() {
		
		int familyMembersAmt = 1;
		
		for(Rabbit r:this.directChildren) {
			familyMembersAmt += r.getFamilyMemebersAmt();
		}
		
		return familyMembersAmt;
	}

	/**
	 * @return the directChildren
	 */
	public LinkedList<Rabbit> getDirectChildren() {
		return this.directChildren;
	}
	
	/**
	 * @param directChildren the directChildren to set
	 */
	public void setDirectChildren(LinkedList<Rabbit> children) {
		this.directChildren = children;
	}

	/**
	 * @return the birthday
	 */
	public int getBirthday() {
		return birthday;
	}

	/**
	 * @param birthday the birthday to set
	 */
	public void setBirthday(int birthday) {
		this.birthday = birthday;
	}
	
}


下面是程序运行结果。
The 1 Month :	1
The 2 Month :	1
The 3 Month :	2
The 4 Month :	3
The 5 Month :	5
The 6 Month :	8
The 7 Month :	13
The 8 Month :	21
The 9 Month :	34
The 10 Month :	55

分享到:
评论

相关推荐

    喂兔子游戏java练习项目源码

    【喂兔子游戏java练习项目源码】是一个适合初学者或者想要巩固Java编程基础的开发者进行实践的项目。这个游戏的核心在于通过控制台交互实现喂养兔子的过程,锻炼了开发者对Java语言的理解和应用能力,特别是面向对象...

    java练习经典题型

    Java 练习经典题型 Java 是一种广泛应用于企业级开发的编程语言,以下是 Java 练习经典题型的知识点总结: 1. 递归函数:在程序 1 中,我们使用递归函数来解决兔子繁殖问题。递归函数是一种函数调用自身的函数,...

    java经典习题练习

    在Java经典习题练习中,我们通常会遇到各种算法和逻辑问题的解决,这有助于提升编程技能和理解计算机科学的核心概念。以下是两个经典的Java编程练习题及其解析: 1. 兔子问题(斐波那契数列) 这个问题是基于...

    JAVA练习题(for循环练习题等)

    ### JAVA练习题知识点详解 #### 1. 斐波那契数列 通过`for`循环打印斐波那契数列的前100项。斐波那契数列定义为:第一项与第二项均为1,后续每一项都是前两项之和(如1, 1, 2, 3, 5, 8, 13, 21...)。 ```java int...

    蓝桥java\JAVA经典练习题精编.pdf

    在程序1中,我们通过递归函数`foo()`来解决经典的斐波那契数列问题,计算每个月的兔子总数。斐波那契数列定义为F(n) = F(n-1) + F(n-2),其中F(1)=1,F(2)=1。此序列在自然界和数学领域都有广泛的应用,如植物生长...

    java练习题.docx

    在 Java 编程中,兔子繁殖问题是一个经典的练习题目。该题目要求计算出每个月的兔子数量,以便解决兔子繁殖的问题。该问题可以通过使用递归函数来解决,递归函数可以将问题分解成更小的子问题,从而计算出每个月的...

    Java经典练习题.

    ### Java经典练习题知识点解析 #### 一、【程序1】斐波那契数列(兔子繁殖问题) **题目描述**: 题目要求计算一个理想化的兔子繁殖问题中的兔子总数。假设一对兔子从出生后第3个月起每个月都会生一对新兔子,而...

    java基础50道经典练习题及答案.doc版下载

    Java编程基础涵盖了许多重要的概念,这里我们通过五个经典练习题来深入理解这些概念: 1. **兔子繁殖问题**(程序1): 这是一个经典的斐波那契数列问题,用于演示递归算法。斐波那契数列的规律是每个数等于前两个...

    java基础50道经典练习题及答案.doc

    Java 基础编程练习题 本资源提供了五个 Java 编程练习题, 涵盖了递归、素数、水仙花数、质因数分解和条件运算符等多个知识点。 程序 1:兔子问题 该程序解决了古典的兔子问题,使用递归算法计算每个月的兔子对数...

    java web 初学者练习题

    在Java Web开发领域,初学者通常需要通过一系列的练习题来巩固基础知识,加深对Web应用的...通过这些练习,初学者不仅能熟悉Java Web开发的基本流程,还能锻炼解决问题的能力,为后续更复杂的Web应用开发打下坚实基础。

    java经典练习50题+答案

    根据给定文件的信息,我们可以总结出五个Java编程练习题及其解答的关键知识点: ### 1. 斐波那契数列 #### 题目描述 编写一个程序来计算指定月份内的兔子数量。假设每个月每对成年兔子都会产下一对小兔子,并且每...

    java编程经典例题

    该资源涵盖了 50 道 JAVA 基础编程练习题,涵盖了从基本的算法到高级的面向对象编程。 【程序 1】题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,...

    适合于初学者的JAVA基础练习题

    对于初学者来说,Java编程的学习离不开实践操作,下面是一些基于Java的基础练习题,旨在帮助初学者巩固基础知识,提升编程技能。 1. **日期天数计算**:编写一个程序,根据用户输入的年、月、日,计算出这一天是...

    java基础练习50题

    ### Java基础练习题知识点解析 #### 程序1:兔子繁殖问题 - **知识点**: - 数列计算:本题涉及一个典型的斐波那契数列问题,即每个月的兔子数量形成一个数列,从第三个月开始,每月的兔子总数等于前两个月兔子...

    java练习算法

    ### Java练习算法知识点详解 #### 知识点一:斐波那契数列 - **题目背景**:一对兔子从出生后第三个月开始每个月都会生一对兔子,小兔子长大到第四个月后也会每月生一对兔子。假设兔子不会死亡,问每个月的兔子总数...

    java基础练习题

    ### Java基础知识点解析 #### 1. 整数排序算法 **题目描述**: 编写程序实现对给定的4个整数从大到小的顺序排列。 **知识点**: 这个题目涉及到基本的排序算法,如冒泡排序、选择排序等。在Java中可以通过循环和...

    非常好的Java练习题

    这些Java练习题覆盖了基础到进阶的多个知识点,包括条件运算符的使用、循环与逻辑控制、字符串处理、数学计算、递归、数组操作、数据结构、算法等。以下是这些题目涉及的具体知识点详解: 1. **条件运算符**:`条件...

    50道JAVA基础编程练习题

    Java 基础编程练习题汇总 本资源提供了 50 道 Java 基础编程练习题,涵盖了 Java 编程的多个方面,包括数据类型、运算符、控制结构、函数、数组、字符串等。这些练习题可以帮助初学 Java 编程的开发者更好地理解 ...

    Java循环练习题

    Java循环练习题 本练习题涵盖了 Java 语言中循环结构的应用,包括 for 循环、while 循环和 do-while 循环等,旨在帮助程序员熟练掌握 Java 语言的循环结构,提高编程能力。 一、山上有一口缸可以装 50 升水,现在...

Global site tag (gtag.js) - Google Analytics