[英]how to check array is sorted or not using recursion in javascript?
我正在尝试编写一个函数,它给我array is sorted or not
如果它已排序,则返回true
否则返回false
。我想使用recursion
来做到这一点
n = [1, 2, 3]
function isSorted(arr, n) {
if (n > arr.length || n ==0) {
return false
}
if (arr[n] < arr[n-1]) {
return false
} else {
return true
}
return isSorted(arr,n-1)
}
console.log(isSorted(n,n.length-1))
目前它给了我false
但预期是true
更新
function isSorted(arr, n) {
if (n ==0 || n ==1) {
return false
}
if (arr[n] < arr[n-1]) {
return false
} else {
return true
}
return isSorted(arr,n-1)
}
console.log(isSorted(n,n.length-1))
从基本情况开始:如果数组的长度为 1 或 0,则它已排序。
否则,仅当第一个元素小于或等于第二个元素时才对其进行排序,并且数组的其余部分也已排序。 在代码中,这可能如下所示:
function isSorted(arr) { return arr.length <= 1 ? true : arr[0] <= arr[1] && isSorted(arr.slice(1)) } console.log(isSorted([1, 2, 3 ])) console.log(isSorted([1, 1, 1 ])) console.log(isSorted([0])) console.log(isSorted([1, 4, 3 ]))
不需要创建新的数组对象(就像使用slice
时会发生的那样)。 您可以递归地遍历原始数组,如check
函数所示:
function isSorted(arr) { var i = 0; var last = arr.length - 1; return (function check() { return (i >= last) || (arr[i] <= arr[++i] && check()); })(); } console.log(isSorted([1, 2, 3 ])) console.log(isSorted([1, 1, 1 ])) console.log(isSorted([0])) console.log(isSorted([])) console.log(isSorted([1, 4, 3 ])) console.log(isSorted([10, 5])) console.log(isSorted([3, 5, 0]))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.