我目前正在尝试解决以下练习:
给定一个Int
s 列表,计算一个元素大于其后元素的次数。该练习迫使我不要使用显式递归。
以下是给出的一些示例输出function :: [Int] -> Int
:
function [1, 2, 3, 4, 5] == 0 -- only increasing numbers
function [5, 4, 3, 2, 1] == 4 -- only decreasing numbers
function [2, 1, 3, 1, 0, 4] == 3
-- 2 > 1
-- 3 > 1
-- 1 > 0
function [1] == 0 -- no successor
function [ ] == 0 -- no numbers at all
我想以某种方式使用,foldl
但经过多次尝试和不可行的想法,我不得不放弃。
如何在不使用递归的情况下计算元素大于其后继元素的次数?