2016-04-25 191 views
0
var rarr = []; 
var reverseArray = function(arr) { 
    if(arr[0]) { 
    rarr.push(arr[arr.length-1]); 
    arr.pop(); 
    reverseArray(arr); 
    } else { 
    return rarr; 
    } 
} 

console.log(reverseArray(["A", "B", "C"])); 

在調試結束時,rarr的值是['C','B','A'],而不是返回undefined。提前致謝。爲什麼這段代碼返回undefined?

+1

儘管在目前給出的答案'return'的bug,測試'ARR [ 0]'得到循環終止是_horrible_ - 如果你的數組中的任何元素保存了一個僞值(例如,零) – Alnitak

+0

感謝您指出。 :) –

回答

1

雖然RARR的調試值爲[ 'C', 'B', 'A']在末端,代替它 被返回undefined

不必返回將成爲值通過遞歸調用返回

更換

reverseArray(arr); 

return reverseArray(arr); 

或者乾脆

console.log(["A", "B", "C"].reverse()); 
+0

哎呀..錯過了..謝謝。任何其他優化的方式,你可以建議? –

+0

@kamalkokne只是'[「A」,「B」,「C」]。reverse()' – gurvinder372

+0

reverse()是完美的,但我正在尋找無反轉方法的優化解決方案。謝謝 –

1

你忘了你一回,如果...試試這個:

var rarr = []; 
var reverseArray = function(arr) { 
    if(arr[0]) { 
    rarr.push(arr[arr.length-1]); 
    arr.pop(); 
    return reverseArray(arr); 
    } else { 
    return rarr; 
    } 
} 

console.log(reverseArray(["A", "B", "C"]));