Java算法题:兔子问题

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

解题思路:

 1     public int exp(int month){
 2         if(month == 1 || month == 2){
 3             return 1;
 4         }else{
 5             return exp(month-1)+exp(month-2);
 6         }
 7     }
 8     @Test
 9     public void testExp(){
10         Formatter f = new Formatter(System.out);
11         for(int i = 1;i < 21;i++){
12             f.format("%-10s",exp(i)+" ");
13             if(i%5==0){
14                 f.format("%-10s\n",exp(i));
15             }
16         }
17     }

测试结果:

1         1         2         3         5         5
8         13        21        34        55        55
89        144       233       377       610       610
987       1597      2584      4181      6765      6765  
时间: 2024-10-18 06:09:25

Java算法题:兔子问题的相关文章

趣味Java算法题(附答案)

[程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? //这是一个菲波拉契数列问题 public class lianxi01 { public static void main(String[] args) { System.out.println("第1个月的兔子对数:    1"); System.out.println("第2个月的兔子对数:    1"

25道经典Java算法题

即使做web开发,也会遇到各种各种需要解决的算法问题,本文节选部分经典练手算法,并提供相关参考答案,希望对你有所帮助[程序1]题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? //这是一个菲波拉契数列问题 public class test01 { public static void main(String[] args) { int f1=1,f2=1,f; int M=30; System.

【JAVA算法题】职业抢劫

题目 /*You are a professional robber planning to rob houses along a street. * Each house has a certain amount of money stashed, * the only constraint stopping you from robbing each of them is that * adjacent houses have security system connected and *

面试-java算法题

1.编写一个程序,输入n,求n!(用递归的方式实现). public static long fac(int n){ if(n<=0) return 0; else if(n==1) return 1; else return n*fac(n-1); } public static void main(String [] args) { System.out.println(fac(6)); } 2.编写一个程序,有1,2,3,4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? pu

经典java算法题及答案

1.使用Java语言编写代码,将一个正整数分解质因数,例如:输入90,打印输出90=2*3*3*5. 答案:public  class  Math{ public  static void  main(String[] args) { int n,i;System.out.println("\nplease input a number:\n");Scanner input=new Scanner(System.in); n=input.nextInt(); System.out.pr

网上的一些java算法题的个人练习笔记

1 package com.test; 2 3 import java.io.BufferedReader; 4 import java.io.InputStreamReader; 5 import java.util.Arrays; 6 7 import org.junit.Test; 8 9 public class Test01 { 10 11 /** 12 * 键盘输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. 13 * @throws Exception 14 */

Java算法题2.判断101-200之间有多少个素数,并输出所有素数。

[原创 转载注明出处] 题目2:判断101-200之间有多少个素数,并输出所有素数. 思路: 素数(质数)就是除了1和它本身以外,没有其他的数可以被它整除 java代码实现: 1 package jichu; 2 3 public class jichu2 4 { 5 public static void main(String[] args) 6 { 7 //for循环遍历101-200 8 for(int i = 101; i < 200; i++) 9 { 10 boolean b = f

Java算法题3.打印出所有的“水仙花数”。

[原创 转载注明出处] 题目3:打印出100-999所有的“水仙花数”. 思路: 水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身. (例如:1^3 + 5^3+ 3^3 = 153) Java代码实现 1 package jichu; 2 3 public class jichu3 4 { 5 public static void main(String[] args) 6 { 7 int b, s, g; 8 for(int i = 100; i <

Java算法题:求素数

题目:判断101-200之间有多少个素数,并输出所有素数. 思路:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数. 具体代码: 1 public Vector exp(int first, int end) { 2 Vector v = new Vector(); 3 boolean b; 4 for (int i = first; i <= end; i++) { 5 b = true;// 假设是质数 6 for (int j = 2;