javascript - 带一个参数的反向数组函数。 (JavaScript)

标签 javascript arrays recursion

我在尝试为递归反转数组但只有一个参数的函数编写主体时遇到问题。

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/

相关文章:

javascript - 如何通过比较对象中具有不同元素的两个对象数组来过滤数组?

c - 返回一个偶数递归

带计时事件的 JavaScript 递归 (setTimeout)

javascript - 为什么 W3 Schools 浏览器检查显示我的 Internet Explorer 8 副本的浏览器版本错误?

javascript - jquery 改变不透明度和滚动高度

javascript - Angular 更优雅的隐藏/显示模式吗?

javascript - Jquery toggle() 不适用于 YouTube 订阅按钮

c - C语言中如何将变量中的字符放入数组中?

Javascript 循环对象并从数组创建缺失的对象

powershell - 使用 Powershell 获取所有 AD 用户的递归组成员身份