我有此功能,需要检查数字gdc
和[1..n]
的n
是否为== 1
,然后进行一些计算。所以我被困住了,因为我找不到将n的初始值存储到变量的方法。
例如,如果我用数字7调用该函数是递归操作,则n
变为6
,然后5
等,因此我不能正确地gdc
;例如1-7
然后2 - 7
然后3 -7
。您知道如何将n
的值存储到a
变量吗?
myproduct :: Integer->Integer
myproduct 0 = 1
myproduct n
|gcd n (n from first call) /= 1 = myproduct (n-1)
|otherwise = x
where
x = n * myproduct (n - 1)
最佳答案
使用帮助函数(通常称为go
)进行递归,并在最外层调用中使用与递归调用中不同的变量名,如下所示:
myproduct :: Integer->Integer
myproduct orig_n = go orig_n
where
go 0 = 1
go n
|gcd n orig_n /= 1 = go (n-1)
|otherwise = x
where
x = n * go (n - 1)
关于haskell - 如何将函数调用的值存储到变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55133331/