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 option location 页面跳转实现代码
Dec 27 Javascript
深入理解javascript的执行顺序
Apr 04 Javascript
jquery SweetAlert插件实现响应式提示框
Aug 18 Javascript
jqueryMobile使用示例分享
Jan 12 Javascript
JS遍历数组和对象的区别及递归遍历对象、数组、属性的方法详解
Jun 14 Javascript
jQuery树形控件zTree使用小结
Aug 02 Javascript
jquery实现垂直和水平菜单导航栏
Aug 27 Javascript
Angularjs修改密码的实例代码
May 26 Javascript
JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析
Sep 05 Javascript
Angular实现双向折叠列表组件的示例代码
Nov 21 Javascript
vue循环数组改变点击文字的颜色
Oct 14 Javascript
Javascript执行流程细节原理解析
May 14 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
Sony CFR 320 修复改造
2020/03/14 无线电
ThinkPHP3.1新特性之对分组支持的改进与完善概述
2014/06/19 PHP
php和asp语法上的区别总结
2019/05/12 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
javascript转换字符串为dom对象(字符串动态创建dom)
2010/05/10 Javascript
使用按钮控制以何种方式打开新窗口的属性介绍
2012/12/17 Javascript
javascript:void(0)是什么意思示例介绍
2013/11/17 Javascript
javascript中关于&amp;&amp; 和 || 表达式的小技巧分享
2015/04/10 Javascript
浅谈MVC+EF easyui dataGrid 动态加载分页表格
2016/11/10 Javascript
JavaScript ES6中const、let与var的对比详解
2017/06/18 Javascript
文本溢出插件jquery.dotdotdot.js使用方法详解
2017/06/22 jQuery
基于JavaScript实现多级菜单效果
2017/07/25 Javascript
Vue组件化开发思考
2018/02/02 Javascript
JS实现的视频弹幕效果示例
2018/08/17 Javascript
微信小程序调用天气接口并且渲染在页面过程详解
2019/06/24 Javascript
浅谈layui使用模板引擎动态渲染元素要注意的问题
2019/09/14 Javascript
ElementUI多个子组件表单的校验管理实现
2019/11/07 Javascript
JS apply用法总结和使用场景实例分析
2020/03/14 Javascript
js代码实现轮播图
2020/05/04 Javascript
[37:50]VP vs TNC Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
python str与repr的区别
2013/03/23 Python
python2.7使用plotly绘制本地散点图和折线图
2019/04/02 Python
Python Django的安装配置教程图文详解
2019/07/17 Python
python多线程分块读取文件
2019/08/29 Python
Django框架模板用法入门教程
2019/11/04 Python
从训练好的tensorflow模型中打印训练变量实例
2020/01/20 Python
Python xlwt模块使用代码实例
2020/06/10 Python
加拿大购物频道:The Shopping Channel
2016/07/21 全球购物
英国时尚配饰、珠宝和服装网站:KJ Beckett
2020/01/23 全球购物
工地资料员岗位职责
2013/12/31 职场文书
农村葬礼主持词
2014/03/31 职场文书
2014年政协委员工作总结
2014/12/01 职场文书
优秀英文求职信范文
2015/03/19 职场文书
奇妙的 CSS shapes(CSS图形)
2021/04/05 HTML / CSS
解决Golang time.Parse和time.Format的时区问题
2021/04/29 Golang
Python中time与datetime模块使用方法详解
2022/03/31 Python