剑指offer:打印从1到最大的n位数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer:打印从1到最大的n位数相关的知识,希望对你有一定的参考价值。
题目:输入数字n,按顺序从1打印到最大的n位十进制数。例如,输入3,则打印1, 2, 3, ..., 999
def printToMaxOfNDigits(n):
"""
打印1, 2, ..., 99999(n个9)
可以从1开始然后用大数加法加到n个9,也可以使用递归方法实现
"""
def helper(idx):
# 递归出口就是设置完最后一位
if idx == n - 1:
for j in range(n):
if number[j] != ‘0‘:
break
if number[j] == ‘0‘:
return
else:
print(‘‘.join(number[j:]))
return
for k in range(10):
# 对于每一位都有10个数字可选,设置完当前位之后就递下去设置下一位,设置完n位就打印
number[idx + 1] = str(k)
helper(idx + 1)
if n < 1:
return
number = [‘0‘] * n
for i in range(10):
# 对于第1位,有10个数字可选
number[0] = str(i)
helper(0)
以上是关于剑指offer:打印从1到最大的n位数的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode——剑指offer17打印从1到最大的n位数