Rekursion Frage und speziellen operatoren (erklaerung)??

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Rekursion Frage und speziellen operatoren (erklaerung)??

    Ich habe ein beispiel

    Quellcode

    1. #include<iostream.h>
    2. int rek(int i) {
    3. double s=0.9;
    4. if (i)
    5. s+= rek (i/10)+i%10;
    6. return int (s+0.5);
    7. }
    8. int main () {
    9. cout << rek (1234);
    10. }
    Alles anzeigen



    und, mir ist logisch, wie bsp began (wo main () ist).
    dann rek (1234) geht nach oben und i ist 1234.

    Hier habe ich if (1234) und was jetzt??

    Kommt rekursion von rek (i/10)? Es geht unten von 1234, 123, 12, 1 und 0.

    Jetzt gehe ich wieder zurueck oder? und kann jemand mir schritte in linie s+= rek (i/10)+i%10; erklaeren?

    ps. Ich weiss was die Loesung ist, aber ich kann nirgendwann es zu erreiche. Hilfeeeeeeeeee :D
  • Es ist alles nur ein wenig komisch aufgeschrieben, aber das sieht nach Endrekursion aus. Mit ein wenig umformen wird das deutlicher.
    Zu der Operation: % bedeutet Modulo. i % 10 liefert also die letzte Ziffer. Bsp 123 % 10 = 3; 987 % 10 = 7; usw.

    s+= 10 ist nur eine verkürzte Schreibweise für: s = s+10
    if (i) ist ebenfalls verkürzte Schreibweise, i wird gegen 0 getestet: if (i != 0)
    Beim return wird ebenfalls getrickt, da das eine int Funktion ist, wird die Nachkommastelle abgeshcnitten, es wird also abgerundet.

    Alles in allem ist das etwas,was ich als Obfuscated bezeichnen würde. Wenn du das ein wenig umbastelst wird der Code lesbar und sicher auch besser verständlich.
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]