更新:在ECMAScript 6中,您可以使用严格模式启用尾部调用优化。只需在文件的顶部放置“ use strict”,就可以了。
我不明白为什么下面的冒泡排序函数的空间复杂度大于0(1)。当我输入一个大数组时,出现堆栈溢出错误。这是为什么?
//Bubble sort using recursion
var swapped = true
function swap(array, i, j) {
var temp = array[i];
array[i] = array[j];
array[j] = temp;
}
function recursiveSwapping(arr, i = 0) {
var len = arr.length;
if (i >= len) {
return arr
}
if (arr[i] > arr[i + 1]) {
swap(arr, i, i + 1);
swapped = true
}
return recursiveSwapping(arr, i + 1)
}
function recursiveBubbleSort(arr) {
if (!swapped) {
return arr
}
swapped = false
recursiveSwapping(arr, i = 0)
return recursiveBubbleSort(arr)
}