You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

阶乘函数为何返回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 = 2
  • factorial(3)的结果 = 3 × 2 = 6
  • factorial(4)的结果 = 4 × 6 = 24
  • factorial(5)的结果 = 5 × 24 = 120

所以最终console.log(factorial(5))输出120,只有最底层的factorial(1)返回1,上层的递归调用会把这个1和当前的n相乘,逐步向上得到最终的阶乘结果。

内容的提问来源于stack exchange,提问作者user20478727

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 19:35:30