Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] wiederholte quersumme

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] wiederholte quersumme

    hi, kann mir vielleicht jemand helfen,

    wie bekomme ich von einer ganzzahl die wiederholte quersumme?

    die normale qs bekomme ich wie folgt:


    <?PHP
    function crossfoot ( $digits )
    {
    // Typcast falls Integer uebergeben
    $strDigits = ( string ) $digits;
    for( $intCrossfoot = $i = 0; $i < strlen ( $strDigits ); $i++ )
    {
    $intCrossfoot += $strDigits{$i};
    }
    return $intCrossfoot;
    }


    echo ( crossfoot ( 156825 ) );
    ?>

    (quersumme im beispiel 27, ich benötige hier den wert "9")

    schon mal danke im vorraus

  • #2
    Hallo,
    wieder Stichwort Rekursion, du rufst die Funktion so lange auf, bis das Ergebnis erzielt wurde (einstelliges Ergebnis).

    Pseudocode:
    Code:
    function quersumme(zahl) {
      // quersumme ausrechnen
      if (neue_quersumme > 9) {
        neue_quersumme = quersumme(neue_quersumme);
      }
      return neue_quersumme
    }
    "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

    Kommentar


    • #3
      danke

      hab ich mir schon gedacht,
      dachte nur, dass man mit nur einer funktion direkt zur einstelligen qs kommen könnte,

      trozdem. hast mir schon weitergeholfen, danke

      Kommentar


      • #4
        Zitat von stevezi Beitrag anzeigen
        dachte nur, dass man mit nur einer funktion direkt zur einstelligen qs kommen könnte
        Das mit der rekursiven Funktion (ist ja nur eine) ist sicher die einfachste und eleganteste Version.
        Aber wenn du es unbedingt ohnr Rekursion haben willst, geht das auch:
        PHP-Code:
        function quer_summe($z){
            while (
        $z 9){
                
        $sum 0;
                
        $str "$z";
                
        $len strlen($str);
                for (
        $i 0;$i $len;$i ++){
                    
        $sum += $str{$i};
                }
                
        $z $sum;
            }
            return(
        $z);

        Gruss
        L

        Kommentar


        • #5
          danke

          ok, hat mir geholfen, thanks

          Kommentar


          • #6
            Dann markiere ich den Beitrag mal als erledigt, bitte nächstes mal selber dran denken

            Kommentar


            • #7
              Das geht auch ganz kurz iterativ
              PHP-Code:
              <?php
              function foo($x) {
                while(
              9<$x) {
                  
              $x = (int)($x/10) + $x%10;
                }
                return 
              $x;
              }

              // Test
              echo foo(0) . " ";
              echo 
              foo(12) . " ";
              echo 
              foo(123) . " ";
              echo 
              foo(192837465) . " ";

              Kommentar


              • #8
                oh, is natürlich auch ganz nett
                denke, ich werde mich für diese möglichkeit entscheiden.

                @all danke nochmal

                Kommentar

                Lädt...
                X