JavaScript递归调用时传入的字符串参数变为undefined问题排查
问题原因分析
- 核心错误是向右移动的递归调用分支参数传参顺序错误:
你定义的函数形参顺序为function mazePath(start,end,n,m,count,output),共6个入参,按顺序第5位是count、第6位是路径字符串output。
你写的向右移动递归调用mazePath(start,end+1,n,m,output+"R");仅传了5个参数:错误把output+"R"放到了第5位count的参数位,原本第6位的output没有传值,默认就是undefined。 - 后续递归中会对未传值的
output做字符串拼接,就会出现undefinedD这类错误拼接结果。
修复方案
把向右移动的递归调用补全count参数即可,修改后代码如下:
// 向下移动的递归调用保留不变 mazePath(start+1,end,n,m,count,output+"D"); // 向右移动的递归调用补全count参数,把路径拼接值放到第6位 mazePath(start,end+1,n,m,count,output+"R");
验证结果
修改后运行会输出正确的所有路径:
DD DRD DRR RDD RDR RR Total path is 6
内容的提问来源于stack exchange,提问作者satyendra
相关产品推荐
相关产品推荐

