编译时生成的Kotlin代码错误

时间:2019-07-12 18:30:15

标签: 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) {
           var ans = (ans * i) / (gcd(ans, i))
        }
        return ans
    }
}

fun main(){
    var objOfLCM = LCMC()
    println(objOfLCM.lcm(10))
}

结果应为2520。 但是在kotlin中,它显示为1.。

1 个答案:

答案 0 :(得分:0)

您正在ans循环的本地上下文中重新定义for

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
}