首页 > 解决方案 > Haskell 递归循环计数器

问题描述

无论如何我可以检查程序的递归次数。例如,我想在 2 次后停止递归。无论如何在haskell中可以做到这一点。

标签: haskell

解决方案


是的,有但是...

当达到某种最终状态时,通常会停止递归,例如“我已经用完了要处理的数据”或“我已经达到了基本情况”。当我看到像“2 次之后”这样随意的东西时,我想问一下你是从哪里想到 2 的。

但是,为了回答所提出的问题:

您需要将一个计数器传递给递归函数,并在完成所需的循环次数后退出。对于这种情况,周期数不是函数外部的问题,通常是创建一个辅助函数来引入它。

myFunction :: Value -> Value
myFunction init = recurse 2 init
 where
   recurse :: Int -> Value -> Value
   recurse 0 result = result
   recurse n intermediate = recurse (n-1) (someFun intermediate)

推荐阅读