我在尝试为递归反转数组但只有一个参数的函数编写主体时遇到问题。
function ReverseArray(arr) {
var i = 0;
var j = arr.length - 1;
if (i < j) {
var temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
return ReverseArray(arr);
}
return arr;
}
我意识到这是行不通的,因为变量将在函数调用自身时重新初始化。
我现在只是在寻找一些想法,因为我被卡住了。
最佳答案
首先,对于那些可能希望通过反转数组来解决真正 问题而不是家庭作业的人,请使用 Array.reverse ,不要浪费时间尝试自己实现它。
如果您绝对必须这样做,那么这里的技巧是在您使用 slice 展开递归和重建最终数组时传递一个较小的数组(使用 concat 减去第一个和最后一个元素) .例如:
function ReverseArray(arr) {
if (arr.length < 2) {
return arr;
} else {
var first = arr[0];
var last = arr[arr.length - 1];
return [last].concat(ReverseArray(arr.slice(1, length - 1))).concat([first]);
}
}
alert(ReverseArray([1,2,3,4,5]));
关于javascript - 带一个参数的反向数组函数。 (JavaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26836808/