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

如何修改Java代码实现数字各位平方和迭代至单非零位?

修改方案

要实现持续计算各位数字平方和直到结果为单个非零数字,你可以通过外层循环迭代或递归调用两种方式实现,以下是具体修改:

方式一:迭代循环(修改原方法)

直接在原findSum基础上增加外层循环,判断结果是否为单个数字(小于10),不满足则重复计算:

public static int findSum(int k) {
    int current = k;
    // 循环直到结果为单个非零数字
    while (current >= 10) {
        int sum = 0;
        // 计算当前数字的各位平方和
        while (current != 0) {
            sum += (current % 10) * (current % 10);
            current /= 10;
        }
        current = sum;
    }
    return current;
}

public static void main(String[] args) {
    System.out.println(findSum(19)); // 输出1
    System.out.println(findSum(82)); // 输出1
    System.out.println(findSum(713)); // 最终输出4
}

方式二:递归实现

拆分逻辑,用单独方法计算单次平方和,再通过递归持续调用直到得到单个数字:

// 计算单次各位平方和
public static int calculateSingleSum(int k) {
    int sum = 0;
    while (k != 0) {
        sum += (k % 10) * (k % 10);
        k /= 10;
    }
    return sum;
}

// 持续计算直到得到单个非零数字
public static int findSum(int k) {
    int result = calculateSingleSum(k);
    if (result >= 10) {
        return findSum(result);
    }
    return result;
}

public static void main(String[] args) {
    System.out.println(findSum(19)); // 输出1
    System.out.println(findSum(82)); // 输出1
}

关键修改说明

  • 核心是重复执行平方和计算,终止条件为结果小于10(单个非零数字)
  • 迭代方式用外层循环控制流程,递归方式通过自身调用实现循环
  • 自动处理含0的中间结果(如100会继续计算得到1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 20:31:34