把大问题分解为两个子问题通过递归实现 程序的出口需要考虑n和m的不同情况:大于小于和等于 大于:全满是不可能的,一个程序出口 等于:m==0 n==1出口 小于:n==1 m==1 m==0出口(小于可能被递减成等于)只有一个水果时不管剩几个盘子都只有一种方法,只有一个盘子时不管几个水果也只有一种方法

while True:
    try:
        m, n = map(int, input().split())
        
        def backtrack(m,n):
            if n==1 or m==1 or m==0:#
                return 1
            elif m<0:
                return 0
            else:
                return backtrack(m,n-1)+backtrack(m-n,n) #存在空和不存在空,如果n>m,肯定属于不存在空
        
        print(backtrack(m,n))
    except:
        break