我具有使用顯式遞歸以下的Haskell函數:與相關值中刪除從功能明確的遞歸
f :: [a] -> [a]
f (a:b:xs) = g a b : f (g a b : xs)
where
g :: a -> a -> a
f (_:[]) = []
f [] = []
注意,遞歸調用取決於之前的步驟中計算出的值(由g
)。
有沒有辦法去除顯式遞歸,如果是的話,怎麼辦?
我具有使用顯式遞歸以下的Haskell函數:與相關值中刪除從功能明確的遞歸
f :: [a] -> [a]
f (a:b:xs) = g a b : f (g a b : xs)
where
g :: a -> a -> a
f (_:[]) = []
f [] = []
注意,遞歸調用取決於之前的步驟中計算出的值(由g
)。
有沒有辦法去除顯式遞歸,如果是的話,怎麼辦?
使用尾遞歸,GHC可以optimaze它
f (a:b:xs) acc = f (g a b : xs) (g a b : acc)
f _ acc = reverse acc
並調用所以
f myList []
什麼是基本情況? –
請參閱我的編輯。我想我加了他們。 –