Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell递归循环计数器_Haskell - Fatal编程技术网

Haskell递归循环计数器

Haskell递归循环计数器,haskell,Haskell,无论如何,我可以检查程序的递归次数。例如,我想在2次之后停止递归。哈斯凯尔有没有这样做的方法。是的,但是 停止递归通常是在达到某个最终状态时完成的,比如“我已经用完了要处理的数据”或“我已经达到了基本情况”。当我看到像“2次之后”这样任意的事情时,我想问你从哪里得到了2 然而,为了回答所提出的问题: 您需要向递归函数传递一个计数器,并在完成所需的循环数后退出。对于这样的情况,循环的数量不是函数外部的问题,通常是创建辅助函数来引入它 myFunction :: Value -> Value

无论如何,我可以检查程序的递归次数。例如,我想在2次之后停止递归。哈斯凯尔有没有这样做的方法。

是的,但是

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

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

检查writer monad这听起来有点像你在haskell中寻找循环-你能解释一下你需要递归的原因吗?检查writer monad这听起来有点像你在haskell中寻找循环-你能解释一下你需要递归的原因吗?这里的元组有点奇怪,阿莫洛伊,是的,我认为你是对的。当我写这篇文章的时候,我脑海中有作者Monad,但是我认为这是比需要的更多的信息,并且从来没有把元组拿出来。这里的元组有点奇怪,而不是简单地拿两个参数。Amoloy,是的,我认为你是对的。当我写这篇文章的时候,我脑子里想的是作者Monad,但我认为这是比需要的更多的信息,而且从来没有把元组拿出来。