2017-05-08 9 views
-4

私はテンプレートメタプログラミングを知りたいと思っています。これは参考のために以下に示す再帰的ユークリッドのアルゴリズムを使って2つの数のGCDを見つける問題です。C++でのテンプレートメタプログラミングを使って、2つの整数の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を試してみてください。 –

関連する問題