面试题之:js 实现阶乘

阶乘的公式是:  n! = 1 * 2 * 3 * 4 * ... * (n-2) * (n-1) * n

输入一个 n, 实现阶乘 。代码如下:

// 公共 html 部分
<p>
    请输入:
    <input type="text" id="input" placeholder="请输入整数n" />
</p>
<button onclick="set()">button</button>
<div class="result">
    结果:<div id="result"></div>
</div>

方法一:递归

function set(){ // 入口函数
    let n = document.getElementById('input').value
    let res = this.math(n)  // 结果
   
    document.getElementById('result').innerText = res
}

function math(n){ // 递归函数
    if(n < 0){
        return -1
    }else if(n === 0 || n === 1){
        return 1
    }else{
        return n * this.math(n-1)
    }
}

方法二: while()

function set(){
    let n = document.getElementById('input').value
    let res = n  // n = n * (n-1) * (n-2) * ... * 2 * 1
   
    if(n < 0){
        res = -1
    }else if(n === 0 || n === 1){
        res = 1
    }else{
        while(n > 1){
            n--    // 递减
            res *= n
        }
    }

    document.getElementById('result').innerText = res
}

方法三: for 循环

思路与 while  一样,采用 递减相乘的思路。

猜你喜欢

转载自www.cnblogs.com/bala/p/11767371.html