我正在练习解决递归类的问题。我的解决方案递归吗? (学习递归)
我解决此站点上的问题: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