黑马程序员技术交流社区

标题: 两个java基础题 带答案 [打印本页]

作者: 柳超    时间: 2014-8-7 21:07
标题: 两个java基础题 带答案
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
  1. public class Prog1{
  2.         public static void main(String[] args){
  3.                 int n = 10;
  4.                 System.out.println("第"+n+"个月兔子总数为"+fun(n));
  5.         }
  6.         private static int fun(int n){
  7.                 if(n==1 || n==2)
  8.                    return 1;
  9.                 else
  10.                    return fun(n-1)+fun(n-2);
  11.         }
  12. }
复制代码

作者: 柳超    时间: 2014-8-7 21:08
题目:判断101-200之间有多少个素数,并输出所有素数。



程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则
表明此数不是素数,反之是素数。



public class Prog2{

    public static void main(String[] args){

        int m = 1;

        int n = 1000;

        int count = 0;

        //统计素数个数

        for(int i=m;i<n;i++){

            if(isPrime(i)){

                count++;

                System.out.print(i+" ");

                if(count%10==0){

                    System.out.println();

                }

            }

        }

        System.out.println();

        System.out.println("在"+m+"和"+n+"之间共有"+count+"个素数");

    }

    //判断素数

    private static boolean isPrime(int n){

        boolean flag = true;

        if(n==1)

          flag = false;

        else{

            for(int i=2;i<=Math.sqrt(n);i++){

            if((n%i)==0 || n==1){

                flag = false;

                break;

            }

             else

               flag = true;

          }

        }

        return flag;

    }
}
作者: alexanda    时间: 2014-8-7 21:41
来踩个沙发,谢谢分享!!!
作者: 姜佳文    时间: 2014-8-7 21:51
兔子这个是fibonacci数列啊
作者: 曾翀    时间: 2014-8-8 15:11
哈哈,,,菲波拉契数
作者: 钟伟    时间: 2014-8-8 15:24
来看一下
作者: .Mч┞尛__洋    时间: 2014-8-8 21:26
加油哈 ,,
作者: 一顿一只牛    时间: 2014-8-8 21:30
看懂代码。 不太会i写咋办
作者: 刘小记.    时间: 2014-8-8 22:26
不错!!
作者: zhuohong_xiao    时间: 2014-8-8 23:55
代码看懂了,我把代码复制自己试试吧。
作者: 到处玩的    时间: 2014-8-9 09:19
这是属于算法题,不错不错
作者: 大成哥    时间: 2014-8-9 09:33
谢谢分享~!
作者: 晋一峰    时间: 2014-8-9 13:15
感谢分享!
作者: 钟翠翠    时间: 2014-8-9 14:06
个人觉得第一题这样写更好:
package test;

public class DieDaiTest{
    public static void main(String[] args){
            for(int n=1;n<=10;n++)
            {
            System.out.println("第"+n+"个月兔子总数为"+fun(n));
            }
    }
    private static int fun(int n){
            if(n==1 || n==2)
               return 1;
            else
               return fun(n-1)+fun(n-2);
    }
}
作者: 柳超    时间: 2014-8-10 00:05
一顿一只牛 发表于 2014-8-8 21:30
看懂代码。 不太会i写咋办

反复自己写,多写就会了
作者: 柳超    时间: 2014-8-10 00:20
谢谢大家,觉得可以的给评个分吧




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2