鹅毛
2015-03-09 09:36
采纳率: 33.3%
浏览 2.1k
已采纳

大牛帮忙看看为啥我的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);

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • danielinbiti 2015-03-09 16:08
    已采纳

    你这没有递归,递归需要自己调用自己,你把数组顶部元素移除后没有再调用自身接着处理移除的数组。

     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);
    
    点赞 打赏 评论
  • devmiao 2015-03-09 10:49

    函数并非每个分支都有返回的结果,所以可能aa为空。

    点赞 打赏 评论

相关推荐 更多相似问题