如何用递归计算双阶乘(乘以赔率)?[作业]

How to calculate double factorial (multiply odds) with recursion?[homework]

我应该如何更改阶乘递归,以仅计算阶乘的奇数或双精度元素?例如,如果:

 multiplyOdds(4)

结果应该return 1*3*5*7 =105

我知道递归是如何工作的,我只需要一点帮助我应该使用哪种方法。

您的函数 multiplyOdds(n) 需要乘以前 n 个奇数?假设第 n 个奇数等于 2 * n - 1,你可以很容易地写出如下 Haskell 中的递归解决方案:

multiplyOdds :: Int -> Int
multiplyOdds n = multiplyOddsTail n 1

multiplyOddsTail :: Int -> Int -> Int
multiplyOddsTail n acc = case n of
  1 -> acc
  n -> multiplyOddsTail (n - 1) (acc * (n * 2 - 1))