这些天,我在闲暇时使用 Haskell 进行编程。作为一名 8 年多的命令式语言程序员,我很难围绕一些函数式构造(尤其是折叠)。我正在解决 Euler 项目中的一个问题,并且碰巧产生了以下代码。
f (num, den) s | num*10 < den = s
| otherwise = f (ratio (num, den) s') s'
where s' = (s+2)
可以使用折叠或其他一些函数构造来重写这种显式递归吗?我使用折叠的主要障碍是想出阶梯函数。最终我放弃了,求助于递归。
编辑:另外,如何在没有显式递归的情况下将函数中另一个函数返回的输出作为调用函数的输入?