编译时生成的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)

我用同样的逻辑用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) {
           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
}

谢谢,这真的很有帮助。谢谢,这真的很有帮助。“运行时错误”通常指程序崩溃的情况(堆栈溢出、按零除法等),而不是错误的输出。“运行时错误”通常指程序崩溃的情况(堆栈溢出、按零除法等),而不是错误的输出。