首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取传入的number参数并返回其阶乘,例如:如果number为4,则应返回(4 *3*2* 1),即24

获取传入的number参数并返回其阶乘,例如:如果number为4,则应返回(4 *3*2* 1),即24
EN

Stack Overflow用户
提问于 2015-05-14 19:24:17
回答 3查看 494关注 0票数 0

有一个函数factorial( number ),接受传递的number参数并返回它的阶乘。

例如: number为4,则返回(4 *3*2* 1),即24

EN

回答 3

Stack Overflow用户

发布于 2015-05-14 19:29:03

代码语言:javascript
复制
function factorial(number) {
    return (number <= 1) ? 1 : factorial(number - 1) * number;
}

alert(factorial(4));

票数 1
EN

Stack Overflow用户

发布于 2015-05-14 19:33:32

试试这个..。

代码语言:javascript
复制
    function factorial(f,n) {
      var l=1;
      for(i=1;i<=n;i++) l=l*i;
      f.p.value=l;
    }
代码语言:javascript
复制
    <form>
    number:<input type="text" name="t"></br>
    <input type="button" value="Run" onClick="factorial(this.form,t.value)"></br>
    result:<input type="text" name="p"></br>
    </form>

票数 0
EN

Stack Overflow用户

发布于 2015-05-14 19:43:42

有两种主要的方法:递归和迭代。

递归方法是编写一个函数,该函数调用自身,直到给定的条件得到响应。它更容易编码和概念化,但它更慢,消耗更多的内存。

代码语言:javascript
复制
function factorial(n) {
    if (n < 0) throw "Negative factorial undefined";
    return (n <= 1) ? 1 : factorial(n-1)*n;
}

迭代版本看起来更麻烦,但在大多数情况下,它更快,占用的内存更少:

代码语言:javascript
复制
function factorialIterative(n) {
    if (n < 0) throw "Negative factorial undefined";
    var fact = 1;
    for (var i = 1; i <= n; i++) {
        fact *= i;
    }
    return fact;
}

您可以在this jsperf test上看到递归解决方案与迭代解决方案的性能差异。

注意:这些版本还执行参数检查(为了避免奇怪的bug,您应该确保这样做),并包括n=0边缘情况

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30236142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档