【问题标题】:Write a non-recursive algorithm to compute n factorial [duplicate]编写一个非递归算法来计算n阶乘[重复]
【发布时间】:2014-04-18 18:00:09
【问题描述】:

我在用 java 编写代码来计算 n 时遇到问题!没有递归。我知道如何循环执行,但我不确定如何以非递归方式执行。

procedure factorial

if n = 1 or n = 0
return 1
if n>1
return(n*factorial(n-1))
end

【问题讨论】:

  • 循环不是递归。
  • 您给出的示例没有使用循环
  • 这也是无效的Java。

标签: java algorithm recursion


【解决方案1】:

这是一个迭代解决方案:

int factorial(int n) {
    int f = 1;
    for(int i=1;i<=n;i++) {
        f *= i;
    }
    return f;
}

【讨论】:

  • 不好问题的好答案,+1
  • 谢谢!我不确定问题在问什么,但我试过了......
  • 你应该避免使用int作为返回值,它会很快溢出使用long,或者更好的是BigInteger
  • @amit 我不同意。通常你想返回一个原始的,并且 int 的使用比 long 多得多。您可以编写另一个名为“longFactorial”的方法,但是...
  • 没问题,这是一个很好的开始。至于使用BigInteger,我赞同这种观点,因为它会在 60 左右失去准确的结果!即使使用long
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-19
  • 2017-04-19
  • 1970-01-01
  • 2013-04-28
  • 2015-01-08
  • 1970-01-01
  • 2014-10-30
相关资源
最近更新 更多