zurzeit arbeite ich mich seit ein paar Wochen in Python rein (habe zumindest etwas Erfahrung in Java und VB) und gehe einige klassische Übungsaufgaben durch. Zurzeit knabber ich einem Problem, bei dem ich das Gefühl, eher Tomaten auf den Augen zu haben und mich festgebissen zu haben. Ihr kennt das sicherlich, ihr wollt etwas lösen, habt das Gefühl, ihr müsste nur eine Kleinigkeit ändern oder umdenken, was aber aufgrund des Gedankenkäfigs nicht gelingen will.
Nun gut, es geht um das pascalsche Dreieck - Klassiker der Mathematik. Die Aufgabe besteht darin, eine rekursive Funktion mit einer beliebigen Anzahl an Zeilen, die vom Eingabeparameter abhängt. So weit, so gut. Jedoch wollte mir rekursiv (iterativ ist nicht das Problem) kein wirkliches Dreieck gelingen. Beim Blick in die Musterlösungen des Autors kam eher Ernüchterung:
Code: Alles auswählen
def pascal(n):
if n == 1:
return [1]
else:
line = [1]
previous_line = pascal(n-1)
for i in range(len(previous_line)-1):
line.append(previous_line[i] + previous_line[i+1])
line += [1]
return line
print(pascal(6))
Und da kam der innere Hund durch - der Wille, mich da durchzubeißen. Erster Entwurf:
Code: Alles auswählen
def pascal(n):
if n == 1:
print("[1]")
return [1]
else:
line = [1]
previous_line = pascal(n-1)
for i in range(len(previous_line)-1):
line.append(previous_line[i] + previous_line[i+1])
line += [1]
print(line)
return line
input=int(input("Wie viele Zeilen? "))
pascal(input)
Code: Alles auswählen
def pascal(n,m=0):
out = ""
for c in range(m):
out += " "
if n == 1:
print(out+"[1]")
return [1]
else:
line = [1]
previous_line = pascal(n-1,m+1)
for i in range(len(previous_line)-1):
line.append(previous_line[i] + previous_line[i+1])
line += [1]
line=eval(str(line))
print(out+str(line))
return line
input=int(input("Wie viele Zeilen? "))
pascal(input)
Und genau hier habe ich mich verrannt und würde mich über jeglichen Input freuen. Wie wäre rekursiv hier ein Dreieck zu lösen, das auch entsprechend wie ein Dreieck aussieht?
Freue mich auf die Rückmeldungen! Vielen Dank schon mal!