我正在練習解決遞歸類的問題。我的解決方案遞歸嗎? (學習遞歸)
我解決此站點上的問題:http://www.w3resource.com/javascript-exercises/javascript-recursion-functions-exercises.php
的問題我指的是規定:編寫JavaScript程序來獲取整數的範圍(X,Y)。 實施例:範圍(2,9) 預期輸出:[3,4,5,6,7,8]
之前看溶液我提出了這樣的:
var range = function (start, end) {
var result = [];
var accumulator = start;
var accumulate = function() {
accumulator++;
if (accumulator === end) {
return;
} else {
result.push(accumulator);
}
accumulate();
};
accumulate();
return result;
};
將溶液在網站上是這樣的:
var range = function(start_num, end_num)
{
if (end_num - start_num === 2)
{
return [start_num + 1];
}
else
{
var list = range(start_num, end_num - 1);
list.push(end_num - 1);
return list;
}
};
我的解決方案在技術上仍然遞歸嗎?最近我有一個類似的測驗答案,我被告知我的解決方案基本上是迭代的。
正如在某些答案中指出的那樣,您的遞歸函數可以很容易地重寫爲循環。遞歸函數的好例子是除法和征服算法,比如快速排序,其中問題的子集通過函數遞歸地傳遞給自己作爲參數。如果你不熟悉,那麼查找分治算法是值得的。 – element11