Kotlin如何不使用幂函数实现for循环逐次计算a^i+b^i并输出
Kotlin 实现1-10轮ai+bi逐次打印方案
原有代码错误点
- 循环内
result3被固定赋值为a+b,完全没有用到提前声明的累计幂变量result1、result2,因此每轮打印的都是固定的a、b原值之和,不会随迭代次数变化 - 幂值计算时序错误:初始
result1、result2设为1,进入循环后首轮就先乘a、b,就算后续修正求和逻辑,首轮得到的也是a²+b²,直接跳过i=1的正确结果 - 函数返回值固定为最后一轮赋值的
a+b,和实际幂和计算结果无关联
修正后代码
采用累计相乘的方式计算每轮幂值,不需要重复计算高次幂,执行效率更高:
fun main(){ // 测试时替换成你需要的a、b参数即可 test(1, 2) } fun test(a: Int, b: Int) { // 初始值对应a^0、b^0 var powA = 1 var powB = 1 for (i in 1..10) { powA *= a powB *= b val sum = powA + powB println("i=$i -> $sum") } }
运行验证
传入a=1、b=2时,控制台输出如下,完全匹配ai+bi的计算规则:
i=1 -> 3 i=2 -> 5 i=3 -> 9 i=4 -> 17 i=5 -> 33 i=6 -> 65 i=7 -> 129 i=8 -> 257 i=9 -> 513 i=10 -> 1025
你原举例中i=2结果为6属于笔误,1²+2²的正确计算结果为5。
内容的提问来源于stack exchange,提问作者Ruthwik
相关产品推荐
相关产品推荐

