辗转相除法求最大公约数
这个辗转相除由于当时不太理解,所以在一次测试的时候有忘了,当时凭着印象算推,算写,花了20分钟大概才写出来额,浪费了赛场上宝贵的20分钟啊,以此当个教训,学过的东西不能只是做过一遍就完事了,要彻底吃透才行,昨天考试考的很差劲,也是这段时间太贪玩的结果吧,感觉题考的很基础,就是写不出来,还是没有真正的学会,所以还要脚踏实地的学,下面是关于辗转相除求最大公约数的算法,一个是递归,一个是非递归
代码一(非递归):
1 int gcd(int a, int b) 2 { 3 int t; 4 while (b) 5 { 6 t = a % b; 7 a = b; 8 b = t; 9 } 10 return a; 11 }
代码二(递归):
1 int gcd(int a, int b) 2 { 3 return (b == 0 ? a : gcd(b, a % b)); 4 }