Gepostet: |
Summe über Quadrate? | ||||||||||
Hallo. Ich möchte ein Programm schreiben, dass bei Eingabe einer Zahl i die Summe über die Quadrate von 1 bis i ausgibt. Ausgehend von der einfachen Aufsummierung (ohne Quadrate) sumn::Int->Int sumn i | i >= 1 = i + sumn (i-1) | otherwise = 0 habe ich einfach an sumn2::Int->Int sumn2 i | i >= 1 = (i*i) + (sumn2 ((i-1)*(i-1))) | otherwise = 0 gedacht. Funktioniert aber nicht...(spuckt ne ziemlich große Zahl aus...Rekursion bleibt hängen?) Wo liegt der Fehler? |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Das ist schon fast richtig. Du darfst sumn2 nur mit (i-1) als Argument rekursiv aufrufen, nicht mit dessen Quadrat. Du kannst übrigens Pattern Matching für Int-Argumente verwenden:
Natürlich würde man im richtigen Leben sowas schreiben:
Und als kleine Zugabe noch eine Implementierung ohne jede Multiplikation:
Übrigens solltest du im Forum [code] Tags verwenden, sonst ist die Formatierung hin. |
|||||||||||
Zum Seitenanfang | |||||||||||