wenn ich eine Summe von Werten bilden wollte, habe ich dieses bisher immer mit einer Schleife gelöst:
Code: Alles auswählen
def summe(n):
summe=0
for i in range(n):
summe = summe + i+1
print(summe)
Code: Alles auswählen
def summe(n):
summe=0
for i in range(n):
summe = summe + i+1
print(summe)
Code: Alles auswählen
return n + SummeRek(n-1)
Code: Alles auswählen
def gib_summe(n):
return n + gib_summe(n - 1) if n > 1 else n
Code: Alles auswählen
def gib_summe(n):
return sum(range(n + 1))
Code: Alles auswählen
def gib_summe(n):
return (n**2 + n) / 2
Code: Alles auswählen
package Summen
import scala.annotation.tailrec
object Summe {
def main(args: Array[String]) {
println("Summe von 5 ist " + sum(5))
}
def sum(limit: Int) = {
@tailrec
def sumAcc(acc: Int, rest: Int): Int =
if (rest == 0) acc
else sumAcc(acc + rest, rest - 1)
sumAcc(0, math.abs(limit))
}
}
Code: Alles auswählen
def gib_summe(n):
return n * (n + 1) / 2
Ach komm... der kleine Gauß wäre doch auch nie darauf gekommen, wenn seine REPL nicht aus Schiefer gewesen wäreBlackJack hat geschrieben:Vielleicht noch die *vernünftige* Lösung für diese Aufgabe, die weder iterativ noch rekursiv ist:
Code: Alles auswählen
(defn sum [n]
(loop [acc 0 rest n]
(if (zero? rest)
acc
(recur (+ acc rest) (dec rest)))))
Code: Alles auswählen
(defn sum [n]
(reduce + (range 1 (+ n 1))))
Ja hab ich die Zeit und Muße alles zu lesen...snafu hat geschrieben:Steht ja nur unter jedem Codeblock rechts unten...
Code: Alles auswählen
var sum = function (n) { return (n > 0) ? n + sum(n - 1) : 0; };
Code: Alles auswählen
sum = lambda n: (lambda f, x: f(f, x))(lambda f, x: x + f(f, x - 1) if x > 0 else 0, n)
Code: Alles auswählen
SIGNATURE Sum
IMPORT Nat ONLY nat
Seq ONLY seq
FUN sum : seq[nat] -> nat
Code: Alles auswählen
IMPLEMENTATION Sum
IMPORT Nat COMPLETELY
Seq COMPLETELY
SeqReduce COMPLETELY
DEF sum(ns) == (+, 0) \ ns
Code: Alles auswählen
!zone
; In: A = n
; Out: A/X = sum from 1 to n
; Y = 0
; Uses: A, X, Y, r1
sum:
ldx #0
tay
cpy #0
beq .exit
stx r1
-
clc
tya
adc r1
sta r1
bcc +
inx
+
dey
bne -
lda r1
.exit:
rts