[erledigt] Wie viele Schleifendurchgaenge?



  • Hallo
    ich hab folgenden Code:

    counter = 0;
    for (int a = -steps; a <= +steps; a++) 
        for (int b = -steps; b <= +steps; b++)
            for (int c = -steps; c <= +steps; c++)
    // d, f, g, ....
                counter++;
    

    Nun kann man counter ausrechnen:
    counter = [(steps + 1) * 2 - 1] ** schleifen;

    schleifen ist dabei die Anzahl der for-Schleifen.

    Was ist jetzt aber wenn bei 0 geskippt wird, also:

    counter = 0;
    for (int a = -steps; a <= +steps; a++) 
        if a == 0 continue;
        for (int b = -steps; b <= +steps; b++)
            if b == 0 continue;
            for (int c = -steps; c <= +steps; c++)
                if c == 0 continue;
    // d, f, g, ....
                counter++;
    

    Wie kann man nun counter ausrechnen?
    Hier eine kleine Tabelle fuer Beispielwerte fuer schleifen=5

    steps	counter	realcounter
    1	        243          32
    2	        3135        1024
    3	        16807      7776
    4	        59049      32768
    5	        161051    100000
    6	        371293    248832
    


  • na, #durchläufe^#schleifen

    wenn du in jeder schleife von -steps bis steps läufst und 0 rauslässt, dann durchläufst du in jeder der schleife n = 2steps viele werte. bei m vielen schleifen macht das dann n^m:
    (2
    1)^5 = 32
    (22)^5 = 1024
    (2
    3)^5 = 7776
    ...

    wenn du in jeder schleife von -steps bis steps läufst und 0 nicht rauslässt, dann durchläufst du in jeder der schleife n = 2steps+1 viele werte:
    (2
    1+1)^5 = 243
    (22+1)^5 = 3135
    (2
    3+1)^5 = 16807
    ...



  • vielen dank 🙂


Anmelden zum Antworten