好久没写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 练习经典题型的知识点总结: 1. 递归函数:在程序 1 中,我们使用递归函数来解决兔子繁殖问题。递归函数是一种函数调用自身的函数,...
在Java经典习题练习中,我们通常会遇到各种算法和逻辑问题的解决,这有助于提升编程技能和理解计算机科学的核心概念。以下是两个经典的Java编程练习题及其解析: 1. 兔子问题(斐波那契数列) 这个问题是基于...
### JAVA练习题知识点详解 #### 1. 斐波那契数列 通过`for`循环打印斐波那契数列的前100项。斐波那契数列定义为:第一项与第二项均为1,后续每一项都是前两项之和(如1, 1, 2, 3, 5, 8, 13, 21...)。 ```java int...
在程序1中,我们通过递归函数`foo()`来解决经典的斐波那契数列问题,计算每个月的兔子总数。斐波那契数列定义为F(n) = F(n-1) + F(n-2),其中F(1)=1,F(2)=1。此序列在自然界和数学领域都有广泛的应用,如植物生长...
在 Java 编程中,兔子繁殖问题是一个经典的练习题目。该题目要求计算出每个月的兔子数量,以便解决兔子繁殖的问题。该问题可以通过使用递归函数来解决,递归函数可以将问题分解成更小的子问题,从而计算出每个月的...
### Java经典练习题知识点解析 #### 一、【程序1】斐波那契数列(兔子繁殖问题) **题目描述**: 题目要求计算一个理想化的兔子繁殖问题中的兔子总数。假设一对兔子从出生后第3个月起每个月都会生一对新兔子,而...
Java编程基础涵盖了许多重要的概念,这里我们通过五个经典练习题来深入理解这些概念: 1. **兔子繁殖问题**(程序1): 这是一个经典的斐波那契数列问题,用于演示递归算法。斐波那契数列的规律是每个数等于前两个...
Java 基础编程练习题 本资源提供了五个 Java 编程练习题, 涵盖了递归、素数、水仙花数、质因数分解和条件运算符等多个知识点。 程序 1:兔子问题 该程序解决了古典的兔子问题,使用递归算法计算每个月的兔子对数...
在Java Web开发领域,初学者通常需要通过一系列的练习题来巩固基础知识,加深对Web应用的...通过这些练习,初学者不仅能熟悉Java Web开发的基本流程,还能锻炼解决问题的能力,为后续更复杂的Web应用开发打下坚实基础。
根据给定文件的信息,我们可以总结出五个Java编程练习题及其解答的关键知识点: ### 1. 斐波那契数列 #### 题目描述 编写一个程序来计算指定月份内的兔子数量。假设每个月每对成年兔子都会产下一对小兔子,并且每...
该资源涵盖了 50 道 JAVA 基础编程练习题,涵盖了从基本的算法到高级的面向对象编程。 【程序 1】题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,...
对于初学者来说,Java编程的学习离不开实践操作,下面是一些基于Java的基础练习题,旨在帮助初学者巩固基础知识,提升编程技能。 1. **日期天数计算**:编写一个程序,根据用户输入的年、月、日,计算出这一天是...
### Java基础练习题知识点解析 #### 程序1:兔子繁殖问题 - **知识点**: - 数列计算:本题涉及一个典型的斐波那契数列问题,即每个月的兔子数量形成一个数列,从第三个月开始,每月的兔子总数等于前两个月兔子...
### Java练习算法知识点详解 #### 知识点一:斐波那契数列 - **题目背景**:一对兔子从出生后第三个月开始每个月都会生一对兔子,小兔子长大到第四个月后也会每月生一对兔子。假设兔子不会死亡,问每个月的兔子总数...
### Java基础知识点解析 #### 1. 整数排序算法 **题目描述**: 编写程序实现对给定的4个整数从大到小的顺序排列。 **知识点**: 这个题目涉及到基本的排序算法,如冒泡排序、选择排序等。在Java中可以通过循环和...
这些Java练习题覆盖了基础到进阶的多个知识点,包括条件运算符的使用、循环与逻辑控制、字符串处理、数学计算、递归、数组操作、数据结构、算法等。以下是这些题目涉及的具体知识点详解: 1. **条件运算符**:`条件...
Java 基础编程练习题汇总 本资源提供了 50 道 Java 基础编程练习题,涵盖了 Java 编程的多个方面,包括数据类型、运算符、控制结构、函数、数组、字符串等。这些练习题可以帮助初学 Java 编程的开发者更好地理解 ...
Java循环练习题 本练习题涵盖了 Java 语言中循环结构的应用,包括 for 循环、while 循环和 do-while 循环等,旨在帮助程序员熟练掌握 Java 语言的循环结构,提高编程能力。 一、山上有一口缸可以装 50 升水,现在...