簡體   English   中英

在 JavaScript 中使用遞歸將數組元素移動到不同的位置

[英]Using Recursion in JavaScript to shift Array elements to different positions

我知道這個問題已經被問了很多,但我還沒有找到一個在 JavaScript(很多 Java 和 C++)中使用遞歸而不是新/舊索引拼接的解決方案。 這只是一個練習,我不擅長遞歸,所以任何幫助和徹底的解釋將不勝感激。

//given an array, shift all elements within the array forward 2 positions.
// [1, 2, 3, 4, 5] --> [4, 5, 1, 2, 3]

我的第一個想法是使用某種占位符,但我不確定如何處理它。 這是我到目前為止

let array = [1, 2, 3, 4, 5];

function shiftTwo (arr) {
  for (i=0; i<arr.length; i++) {
    let curr = arr[0];
  }
}

提前致謝!

這是使用遞歸的解決方案:

 function shiftArr(arr, n) { if (n<=0) { return arr; } else{ arr.unshift(arr.pop()); return shiftArr(arr,n-1) } } //test: console.log(shiftArr([1, 2, 3, 4, 5],2)); // [4, 5, 1, 2, 3]

一種可能性是根據要移動的空格數重復出現。 如果它是 0,則完整地返回數組(或者可能用arr.slice(0)克隆它); 否則,將最后一個條目移到前面並減少一個重復。 代碼可能如下所示:

 const shiftRight = (n, arr) => n <= 0 ? arr : shiftRight (n - 1, [...arr.slice(-1), ...arr.slice(0, -1)]) console .log (shiftRight (2, [1, 2, 3, 4, 5]))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM