Haskell --- 利用递归实现选出List中最大值

版权声明:学习交流为主,未经博主同意禁止转载,禁止用于商用。 https://blog.csdn.net/u012965373/article/details/82951506

-- 在命令式风格中:
这一函数该怎么实现。很可能你会设一个变量来存储当前的最大值,然后用循环遍历该 List,若存在比这个值更大的元素,
则修改变量为这一元素的值。到最后,变量的值就是运算结果。唔!描述如此简单的算法还颇费了点口舌呢!

-- 递归的思路:
我们先定下一个边缘条件,即处理单个元素的List时,返回该元素。如果该List的头部大于尾部的最大值,我们就可以假定较长的List的最大值就是它的头部。
而尾部若存在比它更大的元素,它就是尾部的最大值。就这么简单!现在,我们在haskell中实现它

maximum' :: (Ord a) => [a] -> a  
maximum' [] = error "maximum of empty list"  
maximum' [x] = x  
maximum' (x:xs)   
    | x > maxTail = x  
    | otherwise = maxTail  
    where maxTail = maximum' xs

猜你喜欢

转载自blog.csdn.net/u012965373/article/details/82951506
今日推荐