Kann man eine while Anweisung umschreiben in eine if / if else Anweisung?
Ich möchte gerne diese While schleife so umschreiben dass es nur aus if / if else besteht da ich while schleifen nicht so schön finde aber mir im ersten Moment nichts anderes eingefallen ist.. Wie geht das ?
while (zahl2 != 0) {
if (zahl1 > zahl2) {
zahl1 = zahl1 - zahl2;
} else {
zahl2 = zahl2 - zahl1;
}
} return zahl1;
3 Antworten
Das Problem ist, dass du nicht weisst, wie oft die while-Schleife ausgeführt wird und du somit die Anzahl der if-Anweisungen nicht abschätzen kannst. Du könntest es natürlich mit Rekursion machen. Die Frage ist, ob das einfacher ist.
ja aber ich hab mittlerweile die Lösung selber rausbekommen ohne while Schleife
Das geht zwar, aber das solltest du NIEMALS tun ... nichtsdestotrotz hier erstmal ein paar Beispiele:
if => while:
if (foo) {
bar();
}
// ... wird zu:
while (foo) {
bar();
break;
}
while => if:
while (foo) {Boah ist das gruselig! ><
bar();
}
// ... wird zu:
loop:
if (foo) {
bar();
goto loop;
}
Ich habe deine Frage eigentlich nur aus Jux und Dallerei beantwortet. Gewöhn dir solche schrecklichen Konstrukte bloß nicht an!
Am besten du hältst dich an das, was Omnivore08 geschrieben hat, und lernst erst mal die Grundlagen. Lass dich von den wirren Konstrukten aus meiner Antwort hier nicht durcheinander bringen!
Du solltest if und while dann einsetzen, wenn es angebracht ist, und nicht wenn du etwas "schön" findest. :)
Viel Spaß noch! :)
"nicht so schön findest"? Bitte lerne nochmal die Grundlagen der Programmierung und den Unterschied zwischen Schleifen und Verzweigungen. Zwischen While und For kann man ja streiten und auf "schönheitsfragen" plädieren....aber nicht bei Schleifen und Verzweigungen.
Bitte lerne die Grundlagen nochmal! Du hast ein Verständnisproblem!
PS: Programmierung ist kein Schönheitswettbewerb, es sei denn du machst beim IOCCC mit
Ja wir sollen es mit Rekursion machen aber außer das Prinzip dahinter weiß ich nicht wie ich es umsetzen soll