有一个函数factorial( number ),接受传递的number参数并返回它的阶乘。
例如: number为4,则返回(4 *3*2* 1),即24
发布于 2015-05-14 19:29:03
function factorial(number) {
return (number <= 1) ? 1 : factorial(number - 1) * number;
}
alert(factorial(4));
发布于 2015-05-14 19:33:32
试试这个..。
function factorial(f,n) {
var l=1;
for(i=1;i<=n;i++) l=l*i;
f.p.value=l;
} <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>
发布于 2015-05-14 19:43:42
有两种主要的方法:递归和迭代。
递归方法是编写一个函数,该函数调用自身,直到给定的条件得到响应。它更容易编码和概念化,但它更慢,消耗更多的内存。
function factorial(n) {
if (n < 0) throw "Negative factorial undefined";
return (n <= 1) ? 1 : factorial(n-1)*n;
}迭代版本看起来更麻烦,但在大多数情况下,它更快,占用的内存更少:
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边缘情况
https://stackoverflow.com/questions/30236142
复制相似问题