我试图使用JavaScript递归来反转数组,但它不起作用。需要帮助我在这里错过了什么。
function reverseArrayHelper(left, right, arr) {
if (left >= right) return; // base condition: if l an r collide then only return
// do the small task: swapping left with right
let temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
// arr[left], arr[right] = arr[right], arr[left]
return reverseArrayHelper(left + 1, right - 1, arr); // ask recursion to do the remaining task
}
function reverseArray(arr, m) {
return reverseArrayHelper(m + 1, arr.length - 1, arr);
}
console.log(reverseArray([1, 2, 3, 4, 5, 6], 3));
字符串
3条答案
按热度按时间xuo3flqw1#
如果你担心响应是undefined,你必须在这里返回数组
if (left >= right) return arr;
。因为你没有在这一行返回值,所以响应是未定义的。但反过来的逻辑取决于你。
字符串
oprakyz72#
你不需要找到中点。我已经修复了下面的代码。你应该在基本条件下返回数组。
字符串
ggazkfy83#
代码的问题是你没有从
reverseArray
函数返回修改后的数组。字符串
在
reverseArrayHelper
函数中,我添加了arr
作为基本情况返回值。这确保了修改后的数组在递归调用中一直被返回。使用此代码,要反转整个数组,您应该:
型