用欧氏算法求N个数的GCD
fun main(){
var n = 3
var m = IntArray(n)
m.set(0, 24)
m.set(1, 18)
m.set(2, 30)
var ex29 = Ex29()
ex29.GCD(m)
}
class Ex29 {
fun GCD(array: IntArray){
if (array.toSet().size==1){
println(array[0])
}
var array2 = array
while (array2.toSet().size!=1){
array2.sort()
var new_array=IntArray(50)
new_array[0]=array[0]
var dif:Int
for(i in 0 until array2.size-1){
dif = array2[i+1]-array2[i]
if(dif>0){
new_array.set(i+1, dif)
}
}
array2=new_array
}
println(array2[0])
}
}
没有错误,但希望我在控制台中输入一些东西。即使我无限地输入,它也从不停止。
1条答案
按热度按时间cmssoen21#
你已经陷入了一个无限循环,你需要尝试和调试正在发生的事情。
我建议在代码中的有用位置添加一些语句来记录变量,并限制
while
循环的迭代次数,以便程序可以终止并显示日志输出。按照这种方法,我对代码进行了如下调整(playground):
现在你可以试着运行它,找出程序哪里出错了。