小编bra*_*ger的帖子

Julia记下了Fuss-Catalan数字的代码

从Fuss-Catalan系列C {4} _n(参见在线百科全书序列OEIS A002293),我想用memoization计算第n个术语.我在下面编写的代码可以工作,但在我的笔记本电脑上n = 200时需要大约43秒.有没有办法进一步提高速度?

numterms = 20
C4 = Array{BigInt}(numterms+1) # memoization dictionary
fill!(C4,-1) # -1 implies not yet computed
C4[1] = 1 # Base case for n=0, C[n+1] provides nth term

function catalan4(n,C)
    C[n+1] == -1 || return C[n+1]
    sum1 = convert(BigInt,0)
    for i in 1:n
       sum2 = convert(BigInt,0)
       for j in 1:(n-i+1)
            sum3 = convert(BigInt,0)
            for k in 1:(n-i-j+2)
                sum3+= catalan4(k-1,C)*catalan4(n-i-j-k+2,C)
            end
            sum2 +=  catalan4(j-1,C)*sum3          
       end
       sum1 +=  catalan4(i-1,C)*sum2 
    end
    C[n+1] = …
Run Code Online (Sandbox Code Playgroud)

algorithm memoization julia

3
推荐指数
1
解决办法
193
查看次数

标签 统计

algorithm ×1

julia ×1

memoization ×1