C++ “最大公约数”函数的递归返回值问题
#include <iostream>
using namespace std;
int GCD(int a, int b)
{
if (a%b==0) return b;
else GCD(b,a%b);
}
int main()
{
int a,b;
cin >>a >>b;
if (a>=b) cout <<GCD(a,b) <<endl;
else cout <<GCD(b,a) <<endl;
return 0;
}
初学C++。在上北大郭炜大大的网课。
在做求最大公约数问题时,发现的问题。
请问在定义最大公约数函数时,为什么else后面也要加return?不加OJ上就报Runtime Error。但我在单机测试时能返回正确答案。
int GCD(int a, int b)
{
if (a%b==0) return b;
else GCD(b,a%b);
}
测试了要多次计算的列子,结果也是对的:
(12921,4234)=(4234,219)
(4234,219)=(219,73)
(73,0)