Einfaches Progammverständnis eines Codes

Neue Frage »

Auf diesen Beitrag antworten »
Lucy Einfaches Progammverständnis eines Codes

Meine Frage:
Hallo ,

hab wieder ein kleines Problem.

Ein Programm soll die Summe der ganzen Zahlen von 1 bis N berechnen.



beiden Lösungen A und B:

Lösung A:

Sum := 0;
for J in 1 .. N loop
Sum := Sum + J;
end loop;

Lösung : B
Sum := ((N + 1) * N) /2

Fragestellung :

- Warum ist Lösung A allgemeiner ? auf einen größeren Wertebereich anwendbar ?
als die Lösung B?
- Wie kann Lösung B umformuliert werden, um ihre Nachteile zu
beseitigen, aber trotzdem ohne Schleife auszukommen?


Meine Ideen:
Meine Theorien sind:

A ist allgemeiner ,weil es eine allgemeine For-Schleife ist ,die einfach die letzte Zahl als als Durchlaufende ansieht.
Bin aber aber nicht sicher, obs stimmt.

Hat B überhaupt Nachteile ?
 
Auf diesen Beitrag antworten »
Karlito

Hallo,

aus meiner Sicht ist deine Begründung nicht ganz richtig. Was ist denn an einer allgemeinen FOR-Schleife besser als an einer allgemeinen Multiplikation?

Ich denke der Vorteil von A ist, dass A ohne Multiplikation auskommt. Eine Maschine ohne Multiplizierwerk könnte das Programm also ausführen...

B hat den Nachteil, dass die Zahlen sehr groß werden (n^2), bevor die Division ausgeführt wird und das ergebnis sich wieder "verleinert". Das kann zu einem Überlauf führen.

Vermeiden könnte man das, indem man so umformt, dass die Zahlen nicht so groß werden.... Also Division eher ausführen...

Kannst ja mal einen Vorschlag machen, wie du das realisieren würdest.

VG,

Karlito
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »