数字拆分,列出和为输入参数的所有情况。
例如:
输入:
3
输出
[1, 1, 1]
[1, 2]
[2, 1]
[3]
递归的层数不定,使用python实现,直接上代码。
class num_div(object):
def __init__(self):
self.datas = []
self.total = 0
def search(self, rest):
if rest <= 0:
print(self.datas)
self.total += 1
else:
for i in range(1, rest + 1):
# 设置现场
self.datas.append(i)
# 递归
self.search(rest - i)
# 恢复现场
self.datas.pop()
def get_total(self):
return self.total
if __name__ == '__main__':
num = 3
all_range = num_div()
all_range.search(num)
total = all_range.get_total()
print('共有{}种排列方式'.format(total))