JavaScript 遞迴問題蝸牛小徑


假設我們有一個這樣的陣列 −

const arr = [
   [1, 2, 3, 4],
   [12,13,14,5],
   [11,16,15,6],
   [10,9, 8, 7]
];

陣列必定是一個方陣。

我們需要編寫一個 JavaScript 函式,從這個陣列中取出元素,然後向內螺旋,直到收斂到中心。蝸牛在矩陣外部螺旋並且向內收縮。

因此,以上陣列的輸出應該是 −

const output = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16];

我們將使用遞迴解決此問題。

範例

以下是程式碼 −

const arr = [
   [1, 2, 3, 4],
   [12,13,14,5],
   [11,16,15,6],
   [10,9, 8, 7]
];
const spiralForm = arr => {
   return arr.length > 1 ?
   arr.splice(0,1)[0]
   .concat(spiralForm(arr[0].map((c, i) => {
      return arr.map(r => r[i]);
   })
   .reverse())) :
   arr[0]
}
console.log(spiralForm(arr));

輸出

這將在控制檯上生成以下輸出 −

[
  1,  2,  3,  4,  5,  6,
  7,  8,  9, 10, 11, 12,
 13, 14, 15, 16
]

更新於:2020 年 10 月 1 日

114 次瀏覽

開啟你的 職業 生涯

完成課程進行認證

開始吧
廣告
© . All rights reserved.