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

如何使用递归函数计算给定正整数的阶乘并输出完整运算式

修复方案

原来的代码核心问题是把表达式拼接和数值计算的逻辑揉在了一起,递归返回值同时承担了字符串和数字两种作用,无法得到预期输出。修改思路是把两个逻辑拆分,递归过程中同时记录运算表达式和阶乘结果即可,同时补上输入校验避免异常。

完整可运行代码

// 获取用户输入并转成整数
const input = prompt("Enter a positive integer.");
const num = parseInt(input);

// 校验输入合法性
if (isNaN(num) || num < 1) {
  document.write("请输入有效的正整数");
} else {
  // 递归函数,返回包含运算表达式和阶乘结果的对象
  function factorialize(n) {
    if (n === 1) {
      return {
        expr: "1",
        result: 1
      };
    }
    const prev = factorialize(n - 1);
    return {
      expr: `${n} × ${prev.expr}`,
      result: n * prev.result
    };
  }
  const res = factorialize(num);
  // 拼接输出符合要求的格式
  document.write(`${res.expr} = ${res.result}`);
}

改动说明

  • 新增输入校验:先把prompt返回的字符串转成整数,判断是否为合法正整数,避免非法输入导致程序出错
  • 重构递归逻辑:递归不再返回混合类型的值,而是返回同时包含运算表达式字符串和阶乘数值的对象,两个逻辑完全分离
  • 仅执行一次递归计算:每个层级只调用一次factorialize(n-1),复用返回结果,避免重复计算造成性能损耗
  • 输出格式匹配需求:最终拼接的时候单独加等号和最终结果,完全匹配示例要求的输出格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:45:03