当前位置: 首页 > 知识库问答 >
问题:

如何使用递归计算双阶乘(乘法赔率)?[家庭作业]

邢同
2023-03-14

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

 multiplyOdds(4)

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

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

共有1个答案

夏侯航
2023-03-14

你的函数< code>multiplyOdds(n)需要乘以前< code>n个奇数?假设第n个奇数等于< code>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))
 类似资料:
  • 本文向大家介绍Java算法之递归算法计算阶乘,包括了Java算法之递归算法计算阶乘的使用技巧和注意事项,需要的朋友参考一下 本文为大家分享的java算法计算阶乘,在学习Java课程时经常会遇到求阶乘问题,今天接跟大家一起探讨一下 代码如下: 运行结果:

  • 我如何使程序执行一个新的或重复的操作,或要求用户再次输入一个数字,并知道它的阶乘。

  • 问题内容: 我正在使用《 Java:完整参考》这本书来学习Java。目前,我正在从事递归主题。 请注意: 关于stackoverflow也有类似的问题。我搜索了它们,但没有找到解决问题的方法。我对以下程序中的逻辑感到困惑。 如果我运行下面的程序,它将产生正确的输出,但是我不理解其逻辑。 我不理解以下行中的逻辑: result = fact(n-1)* n; 据我所知,如果我们按以下程序所示传递n

  • 第一次在这里张贴海报,我希望这个问题是可以接受的。 作为一个小测试,我编写了一个使用迭代和递归计算数字阶乘的应用程序。这似乎工作正常,除非尝试计算大于24的数字的阶乘。 例如,当计算24的阶乘时,两种方法都给出了6204480173323941的正确答案。 然而,当计算25的阶乘时,答案不同。递归方法给出的答案为1.5511210043330986e 025,而迭代方法给出的答案为1.551121

  • 本文向大家介绍C#采用递归实现阶乘的方法,包括了C#采用递归实现阶乘的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#采用递归实现阶乘的方法,供大家参考之用。通常来说,如果想实现一个阶乘,比如6 * 5 * 4 * 3 * 2 * 1,首先想到的可能是循环遍历。 如下示例所示: 但以上的阶乘还有一种实现方式:6 * (6-1) * (6-2) * (6-3) * (6-4) * (

  • 问题内容: 这两种获取阶乘(循环与递归)的方法中哪种更有效/更快?如果可以改进,那又如何呢? 语言:Java 问题答案: 因为没有方法调用的开销,所以for循环将更加有效。(作为一般规则,循环几乎总是比递归更有效率) 为了解释为什么您必须深入了解调用方法和调用堆栈时发生的事情。 基本上,当您调用一个方法时,它需要一些空间来使用(例如其局部变量之类的东西),它还需要空间以用于将传入的参数传递给它,并