求 解释下面的python代码
# factorial function
fac = lambda n: [1, 0] [n > 0] or fac(n - 1) * n
# combinatorial function
def comb2(n, k):
return (fac(n) / (fac(n - k) * fac(k)))
[解决办法]
n<=0 时直接返回1
n>0时才使用or后面的计算(注意是个递归,阶乘)
2->1
3->6
4->24
[解决办法]
fac = lambda n: [1, 0] [n > 0] or fac(n - 1) * n
先看第一部分表达式:
[1, 0] [n > 0]
后面的[]是个下标操作
如果n为0,第一部分是1,不执行 or 后面的表达式
如果n大于0(不为0),第一部分是0,则执行or后面的表达式,
且因为or前面是0,返回or后面表达式的结果,作为lambda函数的返回值
comb2函数应该不要解释吧