2016-12-15 3 views
0

誰でもこのコードのしくみを説明するのに役立つことができますか?どのように再帰的な作品が、どのようにそれを書くかを理解しようとしています。ここに新しい学生、ありがとう。誰でもこのコードのしくみを説明できますか? GCD、再帰的、ユークリッドアルゴリズム

def gcdRecur(a, b): 
''' 
a, b: positive integers 

returns: a positive integer, the greatest common divisor of a & b. 
''' 

if b == 0: 
    return a 
else: 
    return gcdRecur(b,a % b) 

obj = gcdRecur(9,12) 
print (obj) 
+2

ようこそstackoverflow :)あなたはユークリッドアルゴリズムのウィキペディアのページを読んで、もっと正確な部分についてあなたに質問した方が良いでしょう。つづきそれ以外の場合は、あなたが必要とするものが何であるかが明確ではないので、あなたの質問に答えるのは非常に難しいです。 http://stackoverflow.com/tourは読む価値があります。 –

+0

ようこそStackOverflowへ。ヘルプドキュメントの投稿ガイドラインを読み、それに従ってください。 [on topic](http://stackoverflow.com/help/on-topic)および[How to Ask](http://stackoverflow.com/help/how-to-ask)をここで適用してください。 StackOverflowは、コーディングまたはチュートリアルサービスではありません。 – Prune

答えて

0

これは重複している必要がありますが、これはユークリッドアルゴリズムの実装です。基本的な原則は、aとbの最大公約数(bの最大値)は、bの最大公約数であり、aをbで割ったときの剰余でもあることです。このステップを繰り返し適用すると、最終的に残りが0になる場合があります(残りが小さくなっていることが示されているため)。次にgcfが他の数になります。したがって、9と12の例では、12と9に、次に9と3に、3と0に3を返します。関数が動作する方法は再帰を介して行われます。つまり、再帰は自身を呼び出すことを意味します。

0

これはEuclid's algorithmの実装です。

簡潔に述べると、%は9の残りの部分と再帰交互引数ので、次0であるので、a % b 9 12により分割し、第二することにより、第1オペランドを除算の余りを返すモジュラス演算子であります操作は12 % 9 == 3となり、その後は9 % 3 == 0となります。3は9を剰余なしで除算するためです。 3はそれ自身と9の合計であるので余分に分割する数でもないので12も分割されます。

関連する問題