zoukankan      html  css  js  c++  java
  • Javascript 递归函数

    递归函数就是在函数内部调用它自己。在Javascript 中有很多写法,值得我们学习一下(Javascript太灵活了)。还是用n的 阶乘 来写例子吧.

    1. 首先,来看一个最普通 最正常的写法。

            function fac(num) {
                if (num < 2) {
                    return 1;
                } else {
                   return num * fac(num - 1);
                }
            }
            var temp = fac;
            fac = null;
            alert(temp(5));

    但是这种写法有一个问题就是,存在一些特殊场景,我们可能需要把fac函数赋值给其它对象,这时在调用这个对象的时候可能会出现问题。就像上面代码所示的调用。

    2. 这时我们使用Javascript中arguments.callee 来解决这种耦合的问题。但是 在严格模式下,不能使用这种方式。

            function fac(num) {
                //"use strict";
                if (num < 2) {
                    return 1;
                } else {
                    return num * arguments.callee(num - 1);
                }
            }
            alert(fac(5));    

    注意:严格模式:在作用域中添加 "use strict" 就进入严格模式。但是  "use strict" 不论前面 后面 还是中间 都不能添加空格,不然无效。

    3. 可以使用函数表达式来实现同样的功能。

            var fac = (function f(num) {
                if (num < 2) {
                    return 1;
                } else {
                    return num * f(num - 1);
                }
            });
            var temp = fac;
            fac = null;
            alert(temp(5));
  • 相关阅读:
    团队作业2
    团队作业2
    软件工程-团队作业1
    软件工程第一次作业
    自我介绍
    软件工程第一次作业
    Python3中采用PyInstaller打包工程项目
    mol2分子库文件拆分成单个mol2文件
    化学信息包安装
    单词读音音频源网址
  • 原文地址:https://www.cnblogs.com/bg57/p/4159107.html
Copyright © 2011-2022 走看看