3
function nestedLoop(depth::Integer, n::Integer, symbArr, len::Integer, k::Integer, num_arr)
for i = k:len
num_arr[depth-n+1] = symbArr[i]
n == 1 && println(num_arr)
(n > 1) && nestedLoop(depth, n-1, symbArr, len, i, num_arr)
end
end
function combwithrep(symbArr, n::Integer)
len = length(symbArr)
num_arr = Array(eltype(symbArr),n)
nestedLoop(n, n, symbArr, len, 1, num_arr)
end
@time combwithrep(["+","-","*","/"], 3)
我從返回基本遞歸函數的值,計算重複組合的值有一些麻煩。我不知道如何提交println
替換combwithrep()
函數返回一些數組。我也沒有爲此使用任務。最好的結果是獲得這個值的迭代器,但在遞歸中是不可能的,不是嗎?如何將遞歸函數的值返回給數組
我覺得答案很簡單,我不明白遞歸的一些問題。
包括並返回一個累加器在你的尾遞歸給你想要嗎? – rickhg12hs
繼[[Combinations' iterator model]](https://github.com/JuliaLang/julia/blob/master/base/combinatorics.jl#L172)創建您自己的'Type',''length','start' ,迭代器的'next'和'done'將是一個很好的練習。 – rickhg12hs
@ rickhg12hs如果我們在談論同一個問題,累加器就是一種計數器。其實,我自己需要組合,而不是櫃檯。但是,我似乎明白你對此不正確。例如,你可以顯示幾行代碼嗎? – korantir