题目:
输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印1,2,3一直到最大的三位数999.
思路:
当n很大的时候,用字符串来解决。如果我们在数字前面补0,那么n位所有十进制数其实就是n个从0到9的全排列。用递归来表达,数字的每一位都可能是0~9中的一个数,然后设置下一位,递归的条件就是我们已经设置了数字的最后一位。
def print1ToMax(n):
if n<=0:
return
number = ['0']*n
for i in range(10):
number[0] = str(i)
pring1ToMaxRecursively(number,n,0)
def pring1ToMaxRecursively(number,n,index):
if (index == n-1):
MyPrint(number)
return
for i in range(10):
number[index+1] = str(i)
pring1ToMaxRecursively(number,n,index+1)
def MyPrint(number):
isBegining = True
length = len(number)
for i in range(length):
if isBegining and number[i]!='0':
isBegining = False
if isBegining==False:
print(number[i], end='') #不换行
print(" ")