4.下列程序的输出结果是( )。
#include <iostream>
using namespace std;
int gcd(int a, int b)
{
if (b == 0)
return a;
return gcd(b, a%b);
}
int main()
{
int a = 60, b = 25;
cout << gcd(a, b) << endl;
return 0;
}
【解析】这里的gcd(a,b)函数是“辗转相除法”的递归实现,用于求解a和b的最大公约数。不妨模拟一下递归的过程,gcd(60,25)将返回gcd(25,10),gcd(25,10)将返回gcd(10,5),gcd(10,5)将返回gcd(5,0),gcd(5,0)会返回5,所以gcd(60,25)的返回值为5。
【答案】B