Frage von halbleeresgals, 33

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;

Antwort
von Omnivore08, 19

"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

Kommentar von TeeTier ,

Sehr schön, dass du den IOCCC erwähnst! :)

Kommentar von Omnivore08 ,

Joar...will mal teilnehmen da :)

Antwort
von PeterWolf42, 33

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.

Kommentar von halbleeresgals ,

Ja wir sollen es mit Rekursion machen aber außer das Prinzip dahinter weiß ich nicht wie ich es umsetzen soll

Kommentar von PeterWolf42 ,

Lass mich raten, ggT per Rekursion? 

Kommentar von halbleeresgals ,

ja aber ich hab mittlerweile die Lösung selber rausbekommen ohne while Schleife 

Antwort
von TeeTier, 11

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) {
bar();
}

// ... wird zu:

loop:
if (foo) {
bar();
goto loop;
}

Boah ist das gruselig! ><

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! :)

Keine passende Antwort gefunden?

Fragen Sie die Community