1
我想设计使用尾递归和插入第一顺序编程哈斯克尔的算法排序插入排序使用尾递归与一次函数
我想出了这个解决方案
isort :: Ord a => [a] -> [a]
isort [] = []
isort [x] = [x]
isort (x:xs) = insert (isort xs)
where insert [] = [x]
insert (y:ys)
| x < y = x : y : ys
| otherwise = y : insert ys
但我不确定它是否使用一阶和尾递归。
有人能想出了使用的替代解决方案
- 尾递归
- 第一顺序编程
感谢,
这不使用尾递归。 'insert'的'otherwise'子句是'y:insert ys'(更清楚地写成'(:) y(insert ys)'),对'insert'的调用作为参数显示为'(:)',而不是在尾部位置 –
你能解释一下“一阶编程”是什么意思吗?这只是一些没有把功能当作论据的东西。 – Lazersmoke
@Lazersmoke确实如此。 –