问题描述
- 大牛帮忙看看为啥我的js递归执行结果为undefined
-
function a(arr, result){
if(!result){
result = [];
}
if(arr.length > 0){
result.push(arr[0]);
arr.splice(0,1);
}else{
return result;
}
}var aa = a([1,2,3,4,5]);
console.log("result ==",aa);
解决方案
你这没有递归,递归需要自己调用自己,你把数组顶部元素移除后没有再调用自身接着处理移除的数组。
function a(arr, result){
if(!result){
result = [];
}
if(arr.length > 0){
result.push(arr[0]);
arr.splice(0,1);
a(arr,result);
}
return result;
}
var aa = a([1,2,3,4,5]);
console.log("result ==",aa);
或者
function a(arr, result){
if(!result){
result = [];
}
if(arr.length > 0){
result.push(arr[0]);
arr.splice(0,1);
a(arr,result);
}else{
return result;
}
}
var aa=[]
a([1,2,3,4,5],aa);
console.log("result ==",aa);
解决方案二:
函数并非每个分支都有返回的结果,所以可能aa为空。
时间: 2024-11-01 11:31:19