简化某些功能取模和不同的情况

问题描述

是否可以简化以下功能函数getCoeffs(r)?它给出了线性递归的系数(r + 1个数字的列表)。函数getSequence(r,upto)给出具有此递归和初始项的序列(它们是2的r + 1幂)。可以为该序列导出一个通用公式吗?

def binomial(n,k):
    p = 1
    for i in range(1,min(k,n-k)+1):
        p *= n
        p //= i
        n -= 1
    return p


def getCoeffs(r):
    fAbs = lambda j: binomial(int((r+1+j)/2),j) if j>0 else (0 if r%4 < 2 else 2)
    fSign = lambda j: -1 if j==0 else (
      (-1 if (r+j)%4 in [1,2] else 1) if r%2==0 else (-1 if (r+j+2)%4 in [1,2] else 1)
    )
    return [fSign(k) * fAbs(k) for k in range(r+1)]

def getSequence(r,upto):
    recN = r+1
    initVals = [2**k for k in range(recN)]
    cs = getCoeffs(r)
    ret = initVals[:]
    for k in range(recN,upto):
        ret.append(sum(cs[j]*ret[k-recN+j] for j in range(recN)))
    return ret

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...