1
我想把這個從Eloquent Javascript遞歸到Ruby的例子。使用遞歸來找到一個等於給定數字的和和序列產品
function findSolution(target) {
function find(start, history) {
if (start == target)
return history;
else if (start > target)
return null;
else
return find(start + 5, "(" + history + " + 5)") ||
find(start * 3, "(" + history + " * 3)");
}
return find(1, "1");
}
console.log(findSolution(24));
// → (((1 * 3) + 5) * 3)
到目前爲止,我只得到了以下內容,我的理解是完全錯誤的。我試圖通過學習重寫一個我還沒完全理解的概念來挑戰自己。
def find_solution(n)
i = 1
history = ""
if (i *= 3) > n && (i += 5) > n
return nil
elsif i == n
return history
else
return (i *= 3 && history << "#{i} * 3") || (i += 5 && history << "#{i} + 5")
end
find_solution
end
不錯。對於第一個示例,不需要爲默認參數定義第二個方法。你可以使用'find(target,start = 1,history =「1」)' –
使用助手方法絕對讓我更好地理解它。謝謝!我將研究lambda函數以及如何使用它們。在這個問題中是否有任何理由使用lambda超過proc? – danraybernard
不客氣。不,lambdas和procs之間的差異不會影響解決方案。 –