首页 > 代码库 > scala programming (2)---- 最大公约数

scala programming (2)---- 最大公约数

gcd.scala

object gcd{  def main(args:Array[String]){    println( gcd1(args(0).toInt,args(1).toInt))    println( gcd2(args(0).toInt,args(1).toInt))  }  def gcd1(x:Int,y:Int):Int={    var a=x    var b=y    while(a!=0){      var temp=a      a=b%a      b=temp    }    b  }  def gcd2(x:Int,y:Int):Int={    if(x==0) y    else gcd2(y%x,x)  }}

$ scalac gcd.scala

$ scala gcd 12 21

$ scala gcd 21 12

 

gcd1采用迭代,gcd2 采用递归,gcd1和gcd2基本上已经做到最简.

为了方便记忆,用下图表示思考过程:

 

scala programming (2)---- 最大公约数