JavaScript使用递归和循环实现阶乘的实例代码


Posted in Javascript onAugust 28, 2018

【实现方法】

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>

下面通过代码看下javascript 中阶乘函数方法

好久没有弄了,练习下:

//  第一, 向上加的阶层函数计算方法
 var number = function(n) {
  if(n == 1) {
    return 1
  } else {
    product = 1;
    for(i = 1; i <= n; i++) {
       product *= i;
    }
    return product;
  }
}
var d = number(5);
alert(d);
 // 第二, 往下减的阶层函数
var del = function(n) {
    if(n == 1) {
       return 1
    } else {
       return n * del(n - 1);
    }
  }
  var data= del(5);
  alert(data);

总结

以上所述是小编给大家介绍的JavaScript使用递归和循环实现阶乘的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JS实现标签页效果(配合css)
Apr 03 Javascript
JavaScript中常见获取元素的方法汇总
Mar 04 Javascript
js实现YouKu的漂亮搜索框效果
Aug 19 Javascript
jQuery实现向下滑出的二级菜单效果实例
Aug 22 Javascript
JS实现的3D拖拽翻页效果代码
Oct 31 Javascript
jQuery实现横向带缓冲的水平运动效果(附demo源码下载)
Jan 29 Javascript
Js与Jq获取浏览器和对象值的方法
Mar 18 Javascript
详解Webpack-dev-server的proxy用法
Sep 08 Javascript
vue+VeeValidate 校验范围实例详解(部分校验,全部校验)
Oct 19 Javascript
swiper.js插件实现pc端文本上下滑动功能示例
Dec 03 Javascript
js array数组对象操作方法汇总
Mar 18 Javascript
vue-model实现简易计算器
Aug 17 Javascript
vue-router路由懒加载的实现(解决vue项目首次加载慢)
Aug 28 #Javascript
JS实现Cookie读、写、删除操作工具类示例
Aug 28 #Javascript
vue组件开发之用户无限添加自定义填写表单的方法
Aug 28 #Javascript
vue.js添加一些触摸事件以及安装fastclick的实例
Aug 28 #Javascript
vue-image-crop基于Vue的移动端图片裁剪组件示例
Aug 28 #Javascript
vue移动端微信授权登录插件封装的实例
Aug 28 #Javascript
Vue 应用中结合vux使用微信 jssdk的方法
Aug 28 #Javascript
You might like
php定义一个参数带有默认值的函数实例分析
2015/03/16 PHP
适用于初学者的简易PHP文件上传类
2015/10/29 PHP
多浏览器支持的右下角浮动窗口
2010/04/01 Javascript
JavaScript在IE和Firefox浏览器下的7个差异兼容写法小结
2010/06/18 Javascript
使用JavaScript实现网页版Pongo设计思路及源代码分享
2014/06/16 Javascript
jquery实现全屏滚动
2015/12/28 Javascript
动态加载JavaScript文件的两种方法
2016/04/22 Javascript
值得分享的轻量级Bootstrap Table表格插件
2016/05/30 Javascript
JS图片左右无缝隙滚动的实现(兼容IE,Firefox 遵循W3C标准)
2016/09/23 Javascript
iOS和Android用同一个二维码实现跳转下载链接的方法
2016/09/28 Javascript
JS实现拖拽的方法分析
2016/12/20 Javascript
EasyUI为Numberbox添加blur事件的方法
2017/03/05 Javascript
详解vue+vueRouter+webpack的简单实例
2017/06/17 Javascript
JS复杂判断的更优雅写法代码详解
2018/11/07 Javascript
vue webpack重写cookie路径的方法
2019/07/10 Javascript
JS中的算法与数据结构之列表(List)实例详解
2019/08/16 Javascript
vue中实现高德定位功能
2019/12/03 Javascript
区分vue-router的hash和history模式
2020/10/03 Javascript
微信小程序实现下拉加载更多商品
2020/12/29 Javascript
python中print的不换行即时输出的快速解决方法
2016/07/20 Python
Python3.5装饰器典型案例分析
2019/04/30 Python
关于tensorflow的几种参数初始化方法小结
2020/01/04 Python
Python序列化pickle模块使用详解
2020/03/05 Python
浅谈python处理json和redis hash的坑
2020/07/16 Python
python利用faker库批量生成测试数据
2020/10/15 Python
Python从文件中读取数据的方法步骤
2020/11/18 Python
CSS3实现闪烁动画效果的方法
2015/02/09 HTML / CSS
HTML5-WebSocket实现聊天室示例
2016/12/15 HTML / CSS
全球采购的街头服饰和帽子:Urban Excess
2020/10/28 全球购物
应届生高等护理求职信
2013/10/12 职场文书
给客户的感谢信
2015/01/21 职场文书
2015教师个人工作总结范文
2015/03/31 职场文书
体检通知范文
2015/04/21 职场文书
2019年房屋委托租赁合同范本(通用版)!
2019/07/17 职场文书
为什么 Nginx 比 Apache 更牛逼
2021/03/31 Servers
springboot中rabbitmq实现消息可靠性机制详解
2021/09/25 Java/Android