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

Java递归实现无辅助函数计算整数首位和末位数字之和

原有代码问题
  • 进入方法后未先判断终止条件就直接触发递归调用,会直接导致无限递归,最终抛出栈溢出异常
  • 逻辑设计完全错误:既没有正确提取首位数字,还重复对末位进行求和,无法得到正确结果
正确递归实现
public static int sumOfFirstandLastdigits(int number) {
    // 处理负数输入,转成正数计算,不影响首尾数字的值
    if (number < 0) {
        number = -number;
    }
    // 终止条件:个位数的首尾都是本身,求和为2倍原值
    if (number < 10) {
        return number * 2;
    }
    // 递归计算去掉末位后的数字的首尾和
    int subResult = sumOfFirstandLastdigits(number / 10);
    // 替换掉子结果里的旧末位,换成当前数字的末位,得到当前数字的首尾和
    return subResult - (number / 10 % 10) + number % 10;
}
逻辑验证

用题目给出的示例验证:

  • 输入4:命中终止条件,返回4*2=8,符合要求
  • 输入137:递归计算sum(13),sum(13)递归计算sum(1)=2,sum(13)返回2 -1 +3=4,最终sum(137)返回4 -3 +7=8,符合要求
  • 输入1234:逐层递归最终得到首位1,替换末位后得到1+4=5,符合要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 05:15:00