gpt4 book ai didi

Haskell-如何在递归函数中跟踪计数器

转载 作者:行者123 更新时间:2023-12-02 02:54:04 25 4
gpt4 key购买 nike

我在尝试跟踪函数中的计数器变量时遇到了一些困难。

我创建了一个函数,它将一个数字作为单个参数并递归地将这个数字乘以 2,将所有乘以 2 的数字相加,下面的代码更清楚地说明了我打算做什么:

sum :: Float -> Float
sum x = x + sum (2*x)

但是,我面临的困难是我希望函数只递归十次。所以我希望它在十个数字加在一起后停止。我尝试使用计数器来跟踪函数递归的次数,但无济于事。

这是我尝试过的:
sumTen :: Float -> Float
sumTen x n
where
n=10
|n == 0 = x
|otherwise = x + sumTen (2*x) (n-1)

我意识到上面的代码不起作用,计数器 n 通过每次递归调用都会被赋予值 10,这意味着它永远不会达到基本情况 n == 0

使这变得如此困难的原因是必须使用一个参数调用 sumTen。在上面的代码中,我试图给函数一个带有预定值的默认参数 n,但它显然不起作用。

有人可以帮助我在“n”次递归调用后停止递归函数吗?

最佳答案

您可以使用辅助功能:

sumNRec x 0     = 0 
sumNRec x times = x + sumNRec (x*2) (times - 1)

sumTen x = sumNRec x 10

关于Haskell-如何在递归函数中跟踪计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27994578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com