mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 15:40:45 +01:00
Common/Utilities: Explicit tail recursion to keep the compilers happy.
This commit is contained in:
@@ -112,11 +112,13 @@ namespace advstd
|
||||
template <typename T1, typename T2>
|
||||
constexpr std::enable_if_t<advstd::is_unsigned_v<T1> && advstd::is_unsigned_v<T2>, std::common_type_t<T1, T2>> gcd(T1 m, T2 n)
|
||||
{
|
||||
if (m < n)
|
||||
return gcd(n, m);
|
||||
if (!n)
|
||||
return m;
|
||||
return gcd(n, m%n);
|
||||
while (n)
|
||||
{
|
||||
std::swap(m,n);
|
||||
if (m <= n)
|
||||
n %= m;
|
||||
}
|
||||
return m;
|
||||
}
|
||||
|
||||
// C++17 std::lcm
|
||||
|
||||
Reference in New Issue
Block a user