编译时生成的Kotlin代码中存在错误
我用同样的逻辑用Python编写了同样的代码,但是Kotlin没有显示我想要的值编译时生成的Kotlin代码中存在错误,kotlin,runtime-error,Kotlin,Runtime Error,我用同样的逻辑用Python编写了同样的代码,但是Kotlin没有显示我想要的值 class LCMC { fun gcd(a: Int, b: Int): Int { if (b == 0) { return a } return gcd(b, a % b) } fun lcm(n:Int) : Int { var ans = 1 for (i in 1..n)
class LCMC {
fun gcd(a: Int, b: Int): Int {
if (b == 0) {
return a
}
return gcd(b, a % b)
}
fun lcm(n:Int) : Int {
var ans = 1
for (i in 1..n) {
var ans = (ans * i) / (gcd(ans, i))
}
return ans
}
}
fun main(){
var objOfLCM = LCMC()
println(objOfLCM.lcm(10))
}
结果应该是2520。
但在kotlin中,它显示了1。您在
for
循环的本地上下文中重新定义了ans
将var
从for
循环的内部移除,您将得到想要的结果:
fun lcm(n:Int) : Int {
var ans = 1
for (i in 1..n) {
/*no var*/ ans = (ans * i) / (gcd(ans, i))
}
return ans
}
您在
for
循环的本地上下文中重新定义ans
将var
从for
循环的内部移除,您将得到想要的结果:
fun lcm(n:Int) : Int {
var ans = 1
for (i in 1..n) {
/*no var*/ ans = (ans * i) / (gcd(ans, i))
}
return ans
}
谢谢,这真的很有帮助。谢谢,这真的很有帮助。“运行时错误”通常指程序崩溃的情况(堆栈溢出、按零除法等),而不是错误的输出。“运行时错误”通常指程序崩溃的情况(堆栈溢出、按零除法等),而不是错误的输出。