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 ]
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP