2017-05-08 12 views
-4

참조 용으로 아래 주어진 재귀 적 유클리드 알고리즘을 사용하여 두 숫자의 GCD를 찾는 문제에 대한 템플릿 메타 프로그래밍 해결책을 알고 싶습니다.C++에서 템플릿 메타 프로그래밍을 사용하여, 두 개의 정수의 GCD를 찾으십시오

function gcd(a, b) 
    if b = 0 
     return a; 
    else 
     return gcd(b, a mod b); 

도움이 되었으면 도움이 될 것입니다.

+7

이 문제는 코드 요청이므로 문제를 해결하는 코드가 아니기 때문에이 질문을 주제와 관련이 없으므로 닫으려고합니다. OP는 숟가락으로 먹는 것보다 해결책을 찾아 냄으로써 더 많은 것을 배우게됩니다. – Peter

답변

2

이와 비슷한?

#include <utility> 
#include <iostream> 

template<int a, int b> struct gcd 
{ 
    static constexpr auto value = gcd<b, a % b>::value; 
}; 

template<int a> 
struct gcd<a, 0> 
{ 
    static constexpr auto value = a; 
}; 

int main() 
{ 
    auto x = gcd<10,5>::value; 

    std::cout << x << std::endl; 
} 
+0

특수 버전에서는 struct gcd 을 왜 말하지 않습니까? –

+1

@VarunRao 템플릿 매개 변수가 사용되는 방식이 아니기 때문입니다. 당신은'printf (const char * "My Text");' – Caleth

+0

@ VarunRao를 시험해보고 사용하지 마십시오. –