代码之家  ›  专栏  ›  技术社区  ›  Alviss Min

Haskell递归循环计数器

  •  1
  • Alviss Min  · 技术社区  · 7 年前

    我是否可以检查程序的递归次数。例如,我想在两次之后停止递归。在哈斯克尔有什么办法。

    1 回复  |  直到 7 年前
        1
  •  7
  •   John F. Miller    7 年前

    是的,但是。。。

    停止递归通常是在达到某个最终状态时完成的,比如“我要处理的数据用完了”或“我达到了基本情况”。当我看到像“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)
    
    推荐文章