我想了解在JavaScript递归,但我从字面上消失。从理论上讲,这很容易,递归简直就是当一个函数调用自身。
function factorial(x) {
if (x < 0) return;
if (x === 0) return 1;
return x * factorial(x - 1);
}
factorial(3);
如果我有通过多维数组进行迭代。如何申请递归函数来做到这一点?我想操纵这些multidimensial阵列无需编写多循环。
for (let i = 0; i < points.length; i++) {
for (let j = 0; j < points.length; j++) {
for (let k = 0; k < points.length; k++) {
for (let l = 0; l < points.length; l++) {
...
}
}
}
let points = ([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
我认为递归功能可以通过最简单的方式通过将第一阵列的迭代解决这个问题,并通过自身调用相同的函数,直到子阵列的端部。
你能解释一下我该怎么做?
您可以迭代多维数组是这样写的递归。
var points = [[1, 2], 3, [4, 3], [10, 50], [98, 100]];
function recursion(array, length = 0) {
if (array.length === length) return 0;
if (Array.isArray(array[length])) {
recursion(array[length]);
}
console.log(array[length]);
recursion(array, length + 1);
}
recursion(points);
使用for-in循环
let points = ([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
for (arr in points){
for(subarr in arr){
.........
}
}
使用循环
let points = ([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
for (let i=0; i<points.length;i++){
for(let j=0; j<points[i].length;j++){
.........
}
}