如何用嵌套循环计算1到N的平方和与立方和?代码异常求助
问题分析与代码修正:平方和正确但立方和结果偏大
问题根源
你的代码使用了嵌套循环,外层循环每执行一次(从1到输入的N),内层的立方和循环就会完整遍历1到N一次——这意味着立方和被重复累加了N次。比如输入5时,正确的立方和是1³+2³+3³+4³+5³=225,但你的代码把这个值累加了5次,最终得到225*5=1125,这就是结果异常偏大的原因。
而平方和的计算是在外层循环中每次累加当前s的平方,外层循环仅执行N次,每次只加一个数的平方,所以结果正确。
修正方案
方案1:拆分循环,分别计算
将立方和的循环从嵌套结构中移出,单独执行一次即可:
int limitNum = input.nextInt(); double squareNums; double sumofSq = 0; double cubedNums; double sumofCubes = 0; // 计算1到N的平方和 for(int s = 1; s <= limitNum; s++) { squareNums = Math.pow(s, 2); sumofSq = sumofSq + squareNums; } // 计算1到N的立方和,单独循环一次 for(int c = 1; c <= limitNum; c++) { cubedNums = Math.pow(c, 3); sumofCubes = sumofCubes + cubedNums; } // 输出结果 System.out.println("平方和:" + sumofSq); System.out.println("立方和:" + sumofCubes);
方案2:单循环同时计算(更高效)
不需要嵌套或两个独立循环,一次遍历即可同时完成两个求和:
int limitNum = input.nextInt(); double sumofSq = 0; double sumofCubes = 0; for(int i = 1; i <= limitNum; i++) { sumofSq += Math.pow(i, 2); sumofCubes += Math.pow(i, 3); } System.out.println("平方和:" + sumofSq); System.out.println("立方和:" + sumofCubes);
验证结果
输入5时,两种方案都会输出:
- 平方和:55.0
- 立方和:225.0
内容的提问来源于stack exchange,提问作者Sher
相关产品推荐
相关产品推荐

