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