zoukankan      html  css  js  c++  java
  • JavaScript利用递归和循环实现阶乘

    【实现方法】

      1.利用while循环来做,当然for循环也可以。

      2.递归

    【代码内容】

        偷懒,直接用onkeyup事件来限制来页面的输入

     

      循环代码:

        

    //第一种方法 while循环
                   oCount.onclick = function (){
                        var oNum = document.getElementById('num').value;
                        oNum = Number(oNum);
                        if(oNum <= 1){
                             oBox.innerHTML = 1;
                        }
                        var oRes = 1;
                        while(oNum){
                            oRes *= oNum;
                            oNum--;
                        }
                        oBox.innerHTML = oRes;
                    }
    

      

        

      递归代码

    // 第二种方法   递归
                oCount.onclick = function(){
                    var oNum = document.getElementById('num').value;
                    oNum = Number(oNum);
                    function factorial (num) {
                        if (num <= 1) {
                            return 1;
                        } else {
                            return (num * factorial(num-1));
                        }
                    };
                    oRes=factorial(oNum);
                    oBox.innerHTML = oRes;
                };
    

      

      完整代码:

     

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>两种实现阶乘方法</title>
        <style>
            #box {
                width: 100%;
                height: 200px;
                border: 1px solid #ccc;
                text-align: center;
            }
        </style>
        <script>
            window.onload = function() {
    
                 var oBox = document.getElementById('box');
                 var oCount = document.getElementById('count');
    
                // 第一种方法 while循环
                //    oCount.onclick = function (){
                //         var oNum = document.getElementById('num').value;
                //         oNum = Number(oNum);
                //         if(oNum <= 1){
                //              oBox.innerHTML = 1;
                //         }
                //         var oRes = 1;
                //         while(oNum){
                //             oRes *= oNum;
                //             oNum--;
                //         }
                //         oBox.innerHTML = oRes;
                //     }
    
    
            // 第二种方法
                oCount.onclick = function(){
                    var oNum = document.getElementById('num').value;
                    oNum = Number(oNum);
                    function factorial (num) {
                        if (num <= 1) {
                            return 1;
                        } else {
                            return (num * factorial(num-1));
                        }
                    };
                    oRes=factorial(oNum);
                    oBox.innerHTML = oRes;
                };
            }
        </script>
    </head>
    <body>
        <div id="box"></div>
        <input type="text" id="num" onkeyup="value=value.replace(/[^0-9]/g,'')" onpaste="value=value.replace(/[^0-9]/g,'')" oncontextmenu = "value=value.replace(/[^0-9]/g,'')">
        <input type="button" id="count" value="计算">
    </body>
    </html>
  • 相关阅读:
    python_摘要_加密
    python_计算器
    python_选课系统
    飞行员配对方案问题 【网络流24题】
    方格取数 【网络流24题】【最小割】
    P2402 奶牛隐藏【二分】【最大流】
    P2172 [国家集训队]部落战争【最小路径覆盖】
    最小路径覆盖问题【网络流24题】
    P2057 [SHOI2007]善意的投票 / [JLOI2010]冠军调查 [最小割] [二分图]
    P2053 [SCOI2007]修车【zkw费用流】
  • 原文地址:https://www.cnblogs.com/wangyang0210/p/9546124.html
Copyright © 2011-2022 走看看