2012.9.14

来源:互联网 发布:windows找不到mstsc 编辑:程序博客网 时间:2024/05/17 08:14

多情况下循环的时间效率会比递归更好,不过递归侧重在简洁易懂,代码相对循环简短,至于使用哪一种视实际情况而定。

递推方式求公约数:

#include <stdio.h>
#include <iostream>

int Gcd(int n, int m)
{
 if(m == 0)
  return n;
 if(m > n)
  Gcd(m, n);
 else
  Gcd(m, n%m);
}

int main()
{
 int m = 5550, n = 10000;

 printf("m 和 n 的公约数为:%d \n",Gcd(m, n));

 system("pause");
}

递归方式求公约数:

#include <stdio.h>
#include <iostream>

void Gcd2(int n, int m)
{
 int tn, tm, temp;
 if((n < 0) || (m < 0))
  return -1;
 else if(n > m)
 {
  tn = n;
  tm = m;
 }
 else
 {
  tn = m;
  tm = n;
 }

 while(tm != 0)
 {
  temp = tm;
  tm = tn % tm;
  tn = temp;
 }

 return tn;

}

int main()
{
 int m = 5550, n = 10000;
 
 printf("m 和 n 的公约数为:%d \n",Gcd(m, n));
 
 system("pause");
}