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

如何使用递归方法计算给定数字各数位的阶乘之和

实现方案

你现有的两个递归方法已经覆盖了核心能力,只需调整数位求和的逻辑,把原来累加数位本身的规则替换为累加该数位的阶乘结果即可。

完整可运行代码

// 阶乘计算方法(保留你原有实现即可)
public static int factorial(int n) {
    if (n == 0) {
        return 1;
    }
    return n * factorial(n - 1);
}

// 调整后的数位阶乘求和方法
public static int sumOfDigitFactorial(int n) {
    if (n == 0) {
        return 0;
    }
    // 取当前个位数字计算阶乘,叠加剩余高位的阶乘和
    return factorial(n % 10) + sumOfDigitFactorial(n / 10);
}

验证示例

输入n=145时的执行流程:

  • 第一层调用:n=145,取个位5计算阶乘得120,剩余高位14进入递归
  • 第二层调用:n=14,取个位4计算阶乘得24,剩余高位1进入递归
  • 第三层调用:n=1,取个位1计算阶乘得1,剩余高位0进入递归
  • 第四层调用:n=0触发终止条件返回0
  • 逐层求和结果:120 + 24 + 1 + 0 = 145,和预期结果一致。

可选边界优化

如果需要兼容输入值为0的场景(0的数位阶乘和为0! =1),可将sumOfDigitFactorial的递归终止条件调整为:

if (n == 0) {
    return factorial(0);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:48:03