任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和 python

a = [1 for i in range(100)]
n = int(input())

def Print(t):
    print(n,'=',sep=' ',end='')
    for i in range(1,t):
        print(a[i],end='+')
    print(a[t])


def dfs(s,t):
    global n
    for i in range(a[t-1],s+1):
        if i<n:
            a[t] = i
            s -= i
            if s == 0:
                Print(t)
            else:
                dfs(s,t+1)
            s += i


dfs(n,1)

你可能感兴趣的:(竞赛)