我试图使用JavaScript递归来反转数组,但它不起作用,需要帮助我在这里错过了什么

sigwle7e  于 2023-08-02  发布在  Java
关注(0)|答案(3)|浏览(96)

我试图使用JavaScript递归来反转数组,但它不起作用。需要帮助我在这里错过了什么。

  1. function reverseArrayHelper(left, right, arr) {
  2. if (left >= right) return; // base condition: if l an r collide then only return
  3. // do the small task: swapping left with right
  4. let temp = arr[left];
  5. arr[left] = arr[right];
  6. arr[right] = temp;
  7. // arr[left], arr[right] = arr[right], arr[left]
  8. return reverseArrayHelper(left + 1, right - 1, arr); // ask recursion to do the remaining task
  9. }
  10. function reverseArray(arr, m) {
  11. return reverseArrayHelper(m + 1, arr.length - 1, arr);
  12. }
  13. console.log(reverseArray([1, 2, 3, 4, 5, 6], 3));

字符串

xuo3flqw

xuo3flqw1#

如果你担心响应是undefined,你必须在这里返回数组if (left >= right) return arr;。因为你没有在这一行返回值,所以响应是未定义的。
但反过来的逻辑取决于你。

  1. function reverseArrayHelper(left, right, arr) {
  2. if (left >= right) return arr; // base condition: if l an r collide then only return
  3. // do the small task: swapping left with right
  4. let temp = arr[left];
  5. arr[left] = arr[right];
  6. arr[right] = temp;
  7. // arr[left], arr[right] = arr[right], arr[left]
  8. return reverseArrayHelper(left + 1, right - 1, arr); // ask recursion to do the remaining task
  9. }
  10. function reverseArray(arr, m) {
  11. return reverseArrayHelper(m + 1, arr.length - 1, arr);
  12. }
  13. console.log(reverseArray([1, 2, 3, 4, 5, 6], 3));

字符串

展开查看全部
oprakyz7

oprakyz72#

你不需要找到中点。我已经修复了下面的代码。你应该在基本条件下返回数组。

  1. function reverseArray(arr, left = 0, right = arr.length - 1) {
  2. if (left >= right) {
  3. return arr;
  4. }
  5. const temp = arr[left];
  6. arr[left] = arr[right];
  7. arr[right] = temp;
  8. return reverseArray(arr, left + 1, right - 1);
  9. }

字符串

ggazkfy8

ggazkfy83#

代码的问题是你没有从reverseArray函数返回修改后的数组

  1. function reverseArrayHelper(left, right, arr) {
  2. if (left >= right) return arr;
  3. let temp = arr[left];
  4. arr[left] = arr[right];
  5. arr[right] = temp;
  6. return reverseArrayHelper(left + 1, right - 1, arr);
  7. }
  8. function reverseArray(arr, m) {
  9. return reverseArrayHelper(m + 1, arr.length - 1, arr);
  10. }
  11. // This code reverses all elements after the 4th element (after index 3)
  12. console.log(reverseArray([1, 2, 3, 4, 5, 6], 3));

字符串
reverseArrayHelper函数中,我添加了arr作为基本情况返回值。这确保了修改后的数组在递归调用中一直被返回。
使用此代码,要反转整个数组,您应该:

  1. console.log(reverseArray([1, 2, 3, 4, 5, 6], -1));

展开查看全部

相关问题