题目:输入数字n,按顺序打印从1到最大的n位十进制数。(大整数问题)
def print_max_n(n):
res = [0 for i in range(n)]
while not is_max(res):
res=list_plus_1(res)
print(res)
def is_max(arrys):
for arr in arrys:
if arr != 9:
return False
return True
# 返回加1后的列表
def list_plus_1(arr):
length = len(arr)
carry = 0
i=-1
while i>=-1*length:
if i==-1:
if arr[-1] + 1 < 10:
arr[-1] = arr[-1] + 1
else:
arr[-1] = arr[-1] + 1 - 10
carry = 1
else:
if arr[i]+carry<10:
arr[i] = arr[i]+carry
carry=0
else:
arr[i]=arr[i]+carry-10
carry=1
i-=1
return arr
注:
list_plus_1:用列表模拟字符串,该函数用来实现数值加1的操作,最后输出字符串时,只需要将列表拼接输出即可
is_max:用于判断该当前列表表示的数是否为要输出的最大数9999...999,如果达到最大,返回True
print_max_n:先调用is_max判断是否已达到最大数,如果没达到,调用list_plus_1,实现加1操作。如果要完善输出,可以在加一个函数,用来输出优化,将列表最前边的若干0不输出