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

题目:输入数字n,按顺序打印出从1到最大的n位十进制数,比如输入3,则打印出1、2、3一直到最大的3位数999.

class Solution:
    def Print1ToMaxOfNDigits(self, n):
        if n<=0:
            return
        number = ['0']*n # n位列表
        for i in range(10):
            number[0] = str(i)
            self.Print1ToMaxOfNDigitsRecursively(number, n, 0)
    # 打印结果
    def PrintNumber(self, number):
        isBeginning0=True
        nLength = len(number)
        for i in range(nLength):
            if isBeginning0 and number[i]!='0':
                isBeginning0 = False
            if not isBeginning0:
                print(number[i], end="")
        print('\t')

    # 递归
    def Print1ToMaxOfNDigitsRecursively(self, number, length, index):
        if index==length-1:
            self.PrintNumber(number)
            return
        for i in range(10):
            number[index+1] = str(i)
            self.Print1ToMaxOfNDigitsRecursively(number, length, index+1)

if __name__=="__main__":
    solution = Solution()
    solution.Print1ToMaxOfNDigits(3)

 

你可能感兴趣的:(LeetCode算法,剑指offer算法)