1. //获得最大公约数
int GetMaxNum(int nNumOne, int nNumTwo)
{
assert(nNumTwo > 0 && nNumOne > 0);
if (nNumOne < nNumTwo)
{
swap(nNumOne, nNumTwo);
}
int nNum[2] = { nNumOne, nNumTwo };
int a = nNum[0] % nNum[1];
while (a != 0)
{
nNum[0] = nNum[1];
nNum[1] = a;
a = nNum[0] % nNum[1];
}
return nNum[1];
}
2. //递归算法在汉诺塔问题中的应用
enum tower { A = 'A', B = 'B', C = 'C' };
void TowersOfHanoi(int n, tower x, tower y, tower z)
{
if (n)
{
TowersOfHanoi(n - 1, x, z, y);
cout<<"move top disk from tower "<<char(x)<<" to top of tower "<<char(y)<<endl;
TowersOfHanoi(n - 1, z, y, x);
}
}