【剑指offer】打印1到最大n位数

【基本思路】

从高位到低位迭代打印

     总共n位数,每一个位置上为0-9共10个数字,一次迭代打印该位置确定后,剩余位置上的数字

//PrintNum 函数设置:从第一个不为0的数字开始打印

import java.util.Scanner;

public class Print1ToMaxOfNBits {
	public static void main(String[] args){
		Scanner input=new Scanner(System.in);
		int nBits=input.nextInt();
		print1ToMaxOfNBits(nBits);
		
		
	}

	private static void print1ToMaxOfNBits(int nBits) {
		// TODO Auto-generated method stub
		if(nBits<=0) {
			System.out.println("invalid bit number");
			return;
		}
		char[] array=new char[nBits];
		for (int i=0;i<10;i++){
			array[0]=(char) (i+'0');
			print1ToMaxOfNBitsRecurise(array,nBits,0);
		}
		
		
		
	}

	private static void print1ToMaxOfNBitsRecurise(char[] array,int length,int index) {
		// TODO Auto-generated method stub
		if(index==array.length-1)
			{
			printNumber(array);
			return;
			}
		for(int i=0;i<10;i++){
			array[index+1]=(char) (i+'0');
			print1ToMaxOfNBitsRecurise(array,length,index+1);
		}
		
	}

	private static void printNumber(char[] array) {
		// TODO Auto-generated method stub
		boolean isbegining0=true;
		int nlength=array.length;
		for(int i=0;i<nlength;i++){
			if(isbegining0&&array[i]!='0')
				isbegining0=false;
			if(!isbegining0)
			System.out.print(array[i]);
		}
		System.out.print(" ");
		
	}
	
}

测试结果:

通过性测试:输入2,3

失效性测试:输入-1,0等不合法的位数

输入: 1
输出: 1 2 3 4 5 6 7 8 9 

输入: -1
输出: invalid bit number



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值