int gcd(int a, int b)
{
if(a == b)
return a;
if(a > b)
gcd(a-b, b);
if(a < b)
gcd(a, b-a);
}
刚开始学习所以不是太理解递归函数,于是写出了这样一段代码,回归传递有问题。
正确的代码是
int gcd(int a, int b)
{
if(a == b)
return a;
if(a > b)
return gcd(a-b, b);
if(a < b)
return gcd(a, b-a);
}
执行起来就是:
调用 gcd(22, 33)
执行 return gcd(22, 11)
调用 gcd(22, 11)
执行 return gcd(11, 11)
调用 gcd(11, 11)
执行 return 11
调用 gcd(11, 11) 结束,回到调用处return gcd(11, 11)
执行 return gcd(11, 11)=11
调用 gcd(22, 11)结束, 回到调用处return gcd(22, 11)
执行 return gcd(22, 33)=11
回到主函数调用gcd(22, 33)处