这道题看起来很简单,但是用到了递归思想,还是有点的难度的。
import math
import sys
def build(length):
nums =[]
if(length<1):
print("整数位数必须大于0.")
return nums
if(length == 1):
nums = [1,2]
return nums
preNums = build(length-1)
for num in preNums:
nums.append(num + pow(10,length-1)*1)
nums.append(num + pow(10,length-1)*2)
return nums;
def display(length):
# length为希望输出的整数位数
print("由1、2组合的%d位数及以下的正整数"%length)
allNums = []
for i in range(length):
allNums.append(build(i +1 ))
#打印输出
for i in allNums:
print(i)
display(int(sys.argv[1]))
讲解:
用递归生成数据,length是输入的整数位数,每个数位的生成依赖于它前一个数的生成,以此循环直到达到数位长度。