Возможно ли модифицировать функцию?
Возможно ли модифицировать функцию gcf таким образом, чтобы она вычисляла выражение а%b один раз за вызов. Если возможно, напишите это оптимальное решение.
#include <iostream>
using namespace std;
int gcf(int a, int b);
int main() {
int a, b;
while (1) {
cout << "Press \"0\" to exit" << endl;
cout << "Enter the 1st number: ";
cin >> a;
if (a == 0)
break;
cout << "Enter the 2nd number: ";
cin >> b;
cout << "gcf: " << gcf(a, b) << endl;
}
return 0;
}
int gcf(int a, int b) {
cout << "gcf(" << a << " " << b << ")=>" << endl;
if (a % b == 0)
return b;
else
return gcf(b, a % b);
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
int gcf(int a, int b) { return (a%=b) ? gcf(b,a):b; }
Только называется сие - greatest common divisor, gcd (и входит в стандартную библиотеку: https://en.cppreference.com/w/cpp/numeric/gcd).