使用命名函数表达式编写递归函数 factorial

Posted Pooc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用命名函数表达式编写递归函数 factorial相关的知识,希望对你有一定的参考价值。

递归函数通常的形式是一个函数通过名称调用自己

function factorial(num) { 
     if (num <= 1) { 
        return 1; 
     } else { 
        return num * factorial(num - 1); 
     } 
} 

如果把这个函数赋值给其他变量,就会出问题

let anotherFactorial = factorial; 
factorial = null; 
console.log(anotherFactorial(4)); // 报错

可以使用命名函数表达式(named function expression)达到目的

const factorial = (function f(num) {
    if (num <= 1 ) {
        return 1
    } else {
        return num * f(num - 1)
    }
})

let anotherFactorial = factorial; 
factorial = null; 
console.log(anotherFactorial(4)); // 24

以上是关于使用命名函数表达式编写递归函数 factorial的主要内容,如果未能解决你的问题,请参考以下文章

C++14 中的递归 lambda 函数

JavaScript高级 函数表达式 《JavaScript高级程序设计(第三版)》

命名函数

JavaScript算法练习:阶乘(Factorial)函数

匿名递归 PHP 函数

深入理解JavaScript系列:揭秘命名函数表达式