如何用递归计算双因子(乘法几率)?[作业]

时间:2016-04-08 08:24:38

标签: recursion factorial

我应该如何改变阶乘递归,只计算阶乘的奇数或双精度?例如:

Double

结果应返回1 * 3 * 5 * 7 = 105

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

1 个答案:

答案 0 :(得分:0)

您的函数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))