阶乘函数为何返回120而非1?运行原理疑惑求解
阶乘递归函数的运行原理与结果解释
这个函数是递归实现的阶乘计算,阶乘的数学定义是:n! = n × (n-1) × (n-2) × ... × 1,所以5!的结果本来就是5×4×3×2×1=120,函数逻辑是正确的,下面一步步拆解它的运行过程:
从factorial(5)的调用开始追踪:
- 调用
factorial(5):n=5不等于1,执行return 5 * factorial(4),此时需要先算出factorial(4)的结果 - 调用
factorial(4):n=4不等于1,执行return 4 * factorial(3),等待factorial(3)的结果 - 调用
factorial(3):n=3不等于1,执行return 3 * factorial(2),等待factorial(2)的结果 - 调用
factorial(2):n=2不等于1,执行return 2 * factorial(1),等待factorial(1)的结果 - 调用
factorial(1):n=1满足条件,直接返回1
接下来开始回溯计算之前的表达式:
factorial(2)的结果 = 2 × 1 = 2factorial(3)的结果 = 3 × 2 = 6factorial(4)的结果 = 4 × 6 = 24factorial(5)的结果 = 5 × 24 = 120
所以最终console.log(factorial(5))输出120,只有最底层的factorial(1)返回1,上层的递归调用会把这个1和当前的n相乘,逐步向上得到最终的阶乘结果。
内容的提问来源于stack exchange,提问作者user20478727
相关产品推荐
相关产品推荐

