我必须编写一个函数,如果给定列表按升序排序,则返回true。空的和1元素的列表被排序。另外,[5,12,12]应该返回true。F#一个函数来检查列表是否排序
我已经写了,似乎工作的函数:
let rec isSorted (l: int list) =
match l with
| [] -> true
| [x] -> true
| [x;y] -> x <= y
| x::y::xr -> if x > y then false else isSorted([y] @ xr);
但似乎有点过了......我想一定有这样做的更简单的方法?我恨我必须匹配4例,但我不知道如何让它变得更聪明。
任何更好的解决方案?
感谢您的支持!通过使用y :: xr,不需要第三种情况。我想这就是欺骗了我 - 它看起来很奇怪。 – Peter 2010-09-04 12:28:50