Ich verstehe diesen simplen Javascript-Code nicht, kann jemand helfen?
Hallo Leute, ich bin noch Anfänger in Webprogrammierung und habe eine kleine Verständnis Frage zu einem wahrscheinlich simplen Javascript /TS Code .
function foo (n: number): number[] {
let bar : number[] = [n];
do{
if (n % 2 == 0) {
n /= 2;
} else {
n *= 3;
n++;
}
bar [bar.length] = n;
} while (n != 1);
return bar;
} let bar: number[] = foo(13);
for(let n of bar) {
console.log(n);
}
Die Mathematik sowie die Verschachtelung verwirren mich ziemlich. Die Konsole zeigt mir nacheinander folgende Werte an: 1,2,4,8,16, 5,10,20,40 zum Schluss die 13.
Ich kann es nicht nachvollziehen leider :(
Meine Gedanken dazu:
n % 2 == 0 der Array startet doch bei 0 oder? D.h 0%0 ==0 , passt also.
dann wird 0/= 2 ausgeführt, d.h das Ergebnis ist wieder 0.
bar [bar.length] = n; --> Die Zeile verstehe ich nicht.
while (n != 1); --> Ja n ist ungleich 1 weil n 0 ist. Dann wird durch return bar; wieder 0 zurückgegeben?
Ich glaube an diesem Punkt habe ich schon etliche Logik-Fehler gemacht. Ich hoffe jemand kann mir die Rechenschritte erklären.
LG