问题:将一个数X拆分成 n 个数,这 n 个数是依次递增的。
求解思路:暴力求解、树深度遍历求解
树的思维:可以将其认为是有n层的树结构(不加根结点),除根结点外,每层有x个结点代表这一层是什么数。
def dfs(depth,last_val,tot):
#先判断递归的终止条件
if depth==n:#条件一(大条件)
if tot==x:#条件二
print(path)#满足条件就打印
return #找其他的可能的答案
#递归主体
for i in range(last_val,x+1):
path.append(i)
dfs(depth+1,i,tot+i)
#depth+1表示进入下一轮迭代,i作为父节点的值传入下一次迭代,tot+i表示计算和
path.pop()
x=int(input("输入一个正整数"))
n=int(input("将这个正整数分成n次"))
path=[]#这是一个存储答案的列表,也是路径的存储情况
dfs(0,1,0)#(深度0是根结点,从1开始遍历,计算和为0)