亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

遞歸函數中return使用的問題.

遞歸函數中return使用的問題.

守候你守候我 2019-02-11 16:23:10
下面的代碼是排序遞歸函數,最后return的是一層層遞歸后的結果,但是當入參的 arr 是一個很長的數組時感覺想象一個個結果的時候太抽象怎么辦,有什么好的方法去理解嗎?var quickSort = function(arr) {  if (arr.length <= 1) { return arr; }  var pivotIndex = Math.floor(arr.length / 2);  var pivot = arr.splice(pivotIndex, 1)[0];  var left = [];  var right = [];  for (var i = 0; i < arr.length; i++){    if (arr[i] < pivot) {      left.push(arr[i]);    } else {      right.push(arr[i]);    }  }  return quickSort(left).concat([pivot], quickSort(right));};
查看完整描述

2 回答

?
藍山帝景

TA貢獻1843條經驗 獲得超7個贊

隨便舉個例:


1、quickSort([5,3,4,5,6,7,4,1,9])

2、return [quickSort([5,3,4,5,4,1]) , 6 , quickSort([7,9])]

3、return [quickSort([3,4,4,1]),5,quickSort([5]) , 6, quickSort(7),9]

4、return [quickSort([3,1]),4,4,   5,5,   6,   7,9]

5、return [1,quickSort([3]),4,4,   5,5,   6,   7,9]

6、return [1,3,4,4,   5,5,   6,   7,9]


查看完整回答
反對 回復 2019-02-18
?
慕哥6287543

TA貢獻1831條經驗 獲得超10個贊

有一個思路:
遞歸, 顧名思義就是函數調用函數,一次遞歸的完成終究要回到原來的函數上去, 那就先從少到多, 推演函數遞歸調用的過程, 首先是退出條件0個元素, 然后1個元素到退出的過程, 接著搞明白2個元素是如何遞歸變成1個元素的, 然后三個元素, 如果你能一步一步推到3個元素, 再多的基本沒有什么區別了!

查看完整回答
反對 回復 2019-02-18
  • 2 回答
  • 0 關注
  • 1411 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號