JavaScript新手如何用递归打印数组全部元素?代码问题求助
问题分析
- 递归函数内部冗余使用了for循环,递归本身就可以实现遍历逻辑,不需要叠加循环
- 递归调用语句写在了
return 0之后,属于不可执行的死代码,永远不会触发递归 - 函数内部重新用
var i声明了变量,覆盖了传入的索引参数i,外部传入的初始值0根本没有生效 - 用全局变量
num存储元素值,每次赋值都会覆盖上一次的结果,最终只能打印最后一个元素,无法输出全部内容
实现思路
递归实现数组遍历只需要满足两个核心逻辑:
- 基线条件:当当前索引大于等于数组长度时,终止递归直接返回
- 递归逻辑:先打印当前索引对应的数组元素,再调用自身,传入索引+1,处理下一个元素
可运行代码示例
基础版本
const a = [1, 2, 3]; function printArr(a, i) { // 基线条件:索引越界就终止递归 if (i >= a.length) { return; } // 打印当前元素 console.log(a[i]); // 递归处理下一个元素 printArr(a, i + 1); } // 调用时传入初始索引0 printArr(a, 0);
优化版本(自带默认初始索引)
// 设置参数默认值,调用时不需要手动传索引 function printArr(a, i = 0) { if (i >= a.length) return; console.log(a[i]); printArr(a, i + 1); } // 直接传入数组即可调用 printArr([1, 2, 3]);
内容的提问来源于stack exchange,提问作者Alpha Momin
相关产品推荐
相关产品推荐

