【发布时间】:2019-12-06 08:49:09
【问题描述】:
foldr :: (a -> b -> b) -> b -> [a] -> b
foldr f v [] = v
foldr f v (x:xs) = f x (foldr f v xs)
和
foldl :: (a -> b -> a) -> a -> [b] -> a
foldl f v [] = v
foldl f v (x:xs) = foldl f (f v x) xs
似乎使用了不同种类的递归。
foldr和foldl的定义中用到了哪些递归?
谢谢。
【问题讨论】:
-
你能描述一下你所说的“递归”是什么意思吗?
-
我想我知道:非尾和尾递归。
-
确实有一个是尾递归的,一个不是尾递归的。是否有您正在使用的尾递归的描述?如果是这样,您了解其中的哪些部分,您不了解其中的哪些部分?提供此类信息有助于我们以帮助您更好理解的方式回答问题。尽可能提供更多这样的信息(尤其是这样的定义以及您对这些定义的了解和不了解)。