为了账号安全,请及时绑定邮箱和手机立即绑定

归并排序问题,lenth为什么undefined

归并排序问题,lenth为什么undefined

慕尼黑8549860 2019-05-25 16:17:01
这是我照着书上敲的归并排序,可是控制台输出merg函数while判断中的length为undefinedfunctionsplitMergeSort(arr){varlen=arr.length;while(len==1){returnarr;}varmid=Math.floor(len/2);varleft=arr.slice(0,mid),right=arr.slice(mid,len);returnsplitMergeSort(merge(left),merge(right))}//合并函数functionmerge(arr1,arr2){varresult=[];varl=0;varr=0;while(l
查看完整描述

2 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

javascript是区分大小的你这里面的语法关键字都写错了是length不是Length是while不是whiLe是floor不是fLoor是slice不是sLice
你确定你是照着书上敲的?这不是误人子弟吗
                            
查看完整回答
反对 回复 2019-05-25
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

你merge(left)merge(right)传递的都是一个参数,你merge函数却又arr1,arr2两个参数,所以arr2.length当然是undefined而且函数也没有return并不知道是在哪本书上敲的
functionsplitMergeSort(arr){
varlen=arr.length;
while(len==1){
returnarr;
}
varmid=Math.floor(len/2);
varleft=arr.slice(0,mid),
right=arr.slice(mid,len);
returnmerge(splitMergeSort(left),splitMergeSort(right))
}
//合并函数
functionmerge(arr1,arr2){
varresult=[];
varl=0;
varr=0;
while(lif(arr1[l]result.push(arr1[l++])
}else{
result.push(arr2[r++])
}
}
while(lresult.push(arr1[l++])
}
while(rresult.push(arr2[r++])
}
returnresult
}
稍微改了一下
                            
查看完整回答
反对 回复 2019-05-25
  • 2 回答
  • 0 关注
  • 444 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信