Autor Beitrag
FrickelEgon
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Do 16.03.17 14:52 
Ich habe da ein Verständnis Problem, muss auch gleich dazu sagen das ich mit C# nicht arbeite.

Es geht um dieses Stück C# Code...
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
        private uint GCD(uint a, uint b)
        {
            if (a == 0)
                return b;
            if (b == 0)
                return a;

            if (a > b)
                return GCD(a % b, b);
            else
                return GCD(a, b % a);
        
        }

Was ich nicht verstehe ist das Modulo was dort in klammern steht (a % b, b) bzw. (a, b % a).

Danke schon mal.

Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt
Moderiert von user profile iconChristian S.: Topic aus Alle Sprachen - Alle Plattformen verschoben am Do 16.03.2017 um 13:58
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4429
Erhaltene Danke: 906


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 16.03.17 14:57 
Es ist ein rekursiver Methodenaufruf. Das Ergebnis der Modulo Operation ist dann einfach der Wert einer der beiden Parameter deines rekursiven Aufrufs der GCD Methode.

Für diesen Beitrag haben gedankt: FrickelEgon
FrickelEgon Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Do 16.03.17 15:26 
Sorry, ich habe die frage nicht richtig gestellt. Mir ist das Ergebnis nicht klar, wie kommt das zustande? Wird wahrscheinlich was total simples sein, ich weiß nur nicht was.

Als Beispiel, a=6500, b=5000 Ergebnis vom Code ist 500. Also mir fehlt schlicht die Grundlage wie das Ergebnis zustande kommt. 6500 Modulo 5000 ergibt auf meinem Taschenrechner 1500, wieso kommt beim Code also 500 raus?
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4429
Erhaltene Danke: 906


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 16.03.17 15:32 
Dein Code sucht den größten gemeinsamen Teiler der beiden übergebenen Werte (GCD steht hier für Greatest Common Divisor). Und der größte gemeinsame Teiler von 6500 und 5000 ist 500.
Dein Code ist eine Implementierung des euklidischen Algorithmus in rekursiv.

Für diesen Beitrag haben gedankt: FrickelEgon
FrickelEgon Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Do 16.03.17 15:38 
Jetzt verstehe ich, tausend Dank!

Ich war vorher komplet auf dem Holzweg.

Danke, und glückwunch zum 4000ten Beitag. :)