Rekursive Funktion 10er Potenz



  • Hallo:)

    kann mir evtl jemand sagen, wie ich eine rekursive Funktion schreibe die mir die größte Zehnerpotenz ausgibt aus einer Zahl. Also zb. Zahl(35475) =10000.

    Es ist doch so: wenn Zahl < 10 = 1 und wenn Zahl <= 10 = (Zahl)/10

    oder nicht?

    aber wie schreibe ich das in C?

    wäre cool wenn mir jemand auf die Sprüunge helfen könnte. :p


  • Mod

    Zehnerpotenz(x) =
    10 * Zehnerpotenz(x / 10), wenn x >= 10
    1, sonst



  • In funktionalem Pseudo-Code:

    big_pow10 x = 1, if x < 10
                = 10 * big_pow10 (x/10), otherwise
    


  • Aber ich versteh nicht ganz wie dann die "nullen" dabei zu stande kommen...
    und warum eigentlich 10* (zahl)/10 ? was gibt des eig fürn Sinn?



  • becki006 schrieb:

    Aber ich versteh nicht ganz wie dann die "nullen" dabei zu stande kommen...

    10 * 10 * 10 * ... * 10 * 1

    becki006 schrieb:

    und warum eigentlich 10* (zahl)/10 ? was gibt des eig fürn Sinn?

    Wo bei wem steht das?



  • bei th69...

    also schreibt man es dann so:

    if(zahl < 10)
    {
    Ergebnis =1;
    }
    else(zahl >= 10)
    {
    Ergebnis = groessteZP(Zahl/10);
    }
    

    reicht das dann so?



  • becki006 schrieb:

    bei th69...

    Seh ich nicht.

    becki006 schrieb:

    if(zahl < 10)
    {
    Ergebnis =1;
    }
    else(zahl >= 10) // das ist Syntaktisch falsch *)
    {
    Ergebnis = groessteZP(Zahl/10); // da fehlt der Faktor 10
    }
    

    Woher kommen zahl und Ergebnis ? Der Codefetzen ist keine Funktion.
    Was machst Du dann mit Ergebnis?

    😉 warum schreibst Du kein vollständiges Programm und bemühst einen Compiler?



  • 1. ist es nicht.
    2. wollte ich nur wissen ob die beiden Fälle so richtig geschrieben sind. Was Zahl und Ergebnis hier darstellen soll, ist wohl eindeutig oder?


  • Mod

    Wenn du so sorgfältig programmierst, wie du liest und schreibst, dann wird das nichts. Für einen Computer ist nichts "klar". Der Computer macht ganz haargenau das, was du ihm sagst. Du musst daher ganz exakt ausdrücken, was du möchtest. Code ist kein Haufen von wahllos zusammengeschmissenen Buchstaben und Zeichen, Code ist Logik pur. Du musst genau wissen, warum du wo und welches Zeichen setzt.



  • int Zehnerpotenz(int x)
    {
    	return x >= 10 ? 10 * Zehnerpotenz(x / 10) : 1;
    }
    

Log in to reply