面试题12:打印1到最大的n位数

来源:互联网 发布:js根据class 隐藏 编辑:程序博客网 时间:2024/04/28 20:15
public class Demo12 {public boolean Increment(int[] number){                 //  这个方法是用来实现对数加1操作        boolean isOverflow = false;        int nTakeOver=0;        for(int i=number.length-1;i>=0;i--){            int nSum = number[i]+nTakeOver;            if(i==number.length-1)                nSum++;            if(nSum>=10){                if(i==0)                    isOverflow=true;                else{                    nTakeOver=1;                    nSum=nSum-10;                    number[i]=nSum;                }            }            else{                number[i]=nSum;                break;            }        }        return isOverflow;    }    //去掉尾部元素前面的0元素    public void PrintNumber(int[] number){        boolean isBeginning=true;        for(int i=0;i<number.length;i++){            if(isBeginning&&number[i]!=0)                isBeginning=false;            if(!isBeginning){                System.out.print(number[i]);            }        }    }    /*     * 对每位进行自加操作,当sum>=10,重置sum为0,nTakeOver=1,     * 进而number[i]产生进位nSum = number[i]+nTakeOver;number[i]=nSum;     */    public void Test(int n){             if(n<=0)            System.out.println("输入出错,请重新输入!");        int[] number = new int[n];        while(!Increment(number)){            PrintNumber(number);//第一次为全0的基础加1,有输出            System.out.println();        }    }    public void PrintMaxOfNdigits(int[] number,int length,int index){    if(index == length-1)    {    PrintNumber(number);//当全0时,无输出,第一次总是执行换行操作    System.out.println();    return;    }    for(int i=0;i<10;i++){    number[index+1]=i;    PrintMaxOfNdigits(number, length, index+1);    }        }    //通过递归,排列n位数各种组合    public void Test1(int n){        if(n<=0)            return;        int[] number = new int[n];        for(int i=0;i<10;i++){            number[0]=i;            PrintMaxOfNdigits(number, n, 0);        }    }public static void main(String[] args) throws Exception {Demo12 demo=new Demo12();demo.Test(3);//demo.Test1(3);}}

0 0
原创粉丝点击