我用相同的逻辑在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.。
答案 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
}