面接試験の問題:jsは階乗を実現します.

4662 ワード

階乗の公式は次の通りです.  n!=1*2*3*4***(n−2)*(n−1)*n
 
一つを入力します n, 階乗を実現します.コードは以下の通りです
//    html   
<p><input type="text" id="input" placeholder="     n" />
p>
<button onclick="set()">buttonbutton>
<div class="result"><div id="result">div>
div>
 
方法1:再帰
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  同じように 徐々に相乗する考え.