我的问题!!
public static void main(String[] args) {
int[] ge = {1,2,3};//个位
int[] shi = {4,5,6};//十位
int[] bai = {7,8,9};//百位
//可以组成多少个不重复的三位数,请打印出来

}
用递归的思想怎么做!

解决方案 »

  1.   

    答:按照你题目中给定的数据(个、十、百),又由于你指定要“递归”,那我就戴着“递归”的手拷来跳一次舞吧。
    参考代码如下:public class Number 
    {
     static  int[] ge = {1,2,3};//个位
     static  int[] shi = {4,5,6};//十位
     static  int[] bai = {7,8,9};//百位 //递归
    public static void number(int i,int j,int k)
    {
    if(i>=bai.length) return;
    if(j>=shi.length)  number(i+1,0,0);
    else if(k>=ge.length) number(i,j+1,0);
         else {
         System.out.println(bai[i]*100+shi[j]*10+ge[k]);
         number(i,j,k+1);
             }
    }

      public static void main(String[] args) 
      {
    number(0, 0, 0);
      }
    }运行结果:
    741
    742
    743
    751
    752
    753
    761
    762
    763
    841
    842
    843
    851
    852
    853
    861
    862
    863
    941
    942
    943
    951
    952
    953
    961
    962
    963
      

  2.   

    public class Tester {
     private int[] ge ;//个位
      private int[] shi ;//十位
      private  int[] bai ;//百位
     public Tester(int bai[],int shi[],int ge[]){
     this.ge=ge;
     this.bai=bai;
     this.shi=shi;
     }
    public static void main(String[] args) {
    int[] ge = {1,2,3};//个位
      int[] shi = {4,5,6};//十位
      int[] bai = {7,8,9};//百位
       Tester test=new Tester(bai,shi ,ge);
        //可以组成多少个不重复的三位数,请打印出来
        test.print(2,2,2);
    }
    public  void print(int baiNum,int shiNum,int geNum){
    System.out.println(bai[baiNum]+""+shi[shiNum]+""+ge[geNum]);
    if(geNum==0){
    if(baiNum==0&&shiNum==0)return;
    if(shiNum==0){baiNum--;shiNum=2;}
    else --shiNum;
    geNum=2;
    }
    else{
    --geNum;
    }
    print(baiNum,shiNum,geNum);
    }
    }
      

  3.   


    晦涩难懂的代码不一定就是好代码。
    用个三重循环可以轻松搞定。虽然"撮"了一点。
    经测试,在不打印输出信息的情况下,三楼的递归程序运行所需要的时间比循环多耗时20%;
        public static void main(String[] args) {
            int[] ge = {1,2,3};//个位 
            int[] shi = {4,5,6};//十位 
            int[] bai = {7,8,9};//百位 
            long t1=0,t2=0;            for(int m=0;m<1000000;m++){
                    long t11=System.nanoTime();
                    for (int i = 0; i < bai.length; i++) 
                    for (int j = 0; j < shi.length; j++)
                    for (int k = 0; k < ge.length; k++){
                        //System.out.println(""+bai[i]+shi[j]+ge[k]);
                    }
                    long t12=System.nanoTime();
                    number(0, 0, 0);
                    long t13=System.nanoTime();
                    
                    t1=t1+t12-t11;
                    t2=t2+t13-t12;
                }            System.out.println(t1);
                System.out.println(t2);
        }