求fun(app, d):
(按题意:app>=0,d>=1,但代码中有app-d,不能保证输入的app>0, 而题目确保d>=1,递归出口有d=1, 且所以d不会再小)

拆分成2种情况(不重不漏):
1.某些盘子没有app。具体哪些盘子空着?不管。只要1个盘子没有app,则满足这点。其他的盘子的情况?问老爸(下一轮迭代)
2.所有盘子都有app。往每个盘子仍1个app。则满足了这点。各盘子有多少app?问老爸(下一轮迭代)
return fun(app,d-1)+fun(app-d,d)

递归出口:
1.app <0:d个非负整数 求和为负数 的一次方程,无解。return 0
2.app==0,错误理解:“没苹果了,没法分,解决方法数为0”。

if app==0:
    return 0

但其实,a1+a2+...+an = 0这个方程有1个解。全0解。retunr 1才对。

  1. app>0, d==1: return 1
    理解方法:方程a1 = app, 解只有一个,就是a1 = app。

python:


def fun(app, d):
    if app <0:
        return 0
    else:
        #这行改成 if app==0也行,但要多跑几遍fun(app,d-1)直到 d=1
        if  app==1 or app==0:
            return 1
        else:
            if d==1 :
                return 1
            else:
                return fun(app,d-1)+fun(app-d,d)

while 1:
    try:
        l=input().split(' ')
        app,d=tuple(map(int,l))
        print(fun(app,d))
    except:
        break