int gcd(int m, int n)
{
if (n==0)
return m;
else
return gcd(n,m%n);
}
int GetGCD(int m,int n)
{
if (m>n)
return gcd(m,n);
else
return gcd(n,m);
然後調用GetGCD(m,n)
的條款;
方法2
GetGCD(int n,int m)
{
if(m<=n && n%m == 0)
return m;
if(n < m)
return GetGCD(m,n);
else
return GetGCD(m,n%m);
}
接近1背後的想法是,爲了保持遞歸方法儘可能地簡單,通過將額外的限制的參數(輸入)。
我忘了提及,也許方法1運行得更快,因爲'M> N'檢查只執行一次,而不是在方法2中的每次遞歸中評估。 – colinfang
有一個堆棧交換站點用於代碼評論:http:/ /codereview.stackexchange.com/ –