Return

2016-05-19 14 views
0
eine bestimmte Linie von Pascals Dreieck rekursiv mit Python

Der Code, den ich schreibe sollte Ausgänge wie folgt:Return

>>> pascalLine(0) 
[1] 
>>> pascalLine(1) 
[1, 1] 
>>> pascalLine(2) 
[1, 2, 1] 
>>> pascalLine(3) 
[1, 3, 3, 1] 

ich den Code tun dies durch Iteration, aber ich brauche es rekursiv durchgeführt, und Ich bin dabei verloren zu versuchen. Hier ist der Code, den ich habe:

def pascalLine(n): 
    value = 1 
    new_row = [value] 
    if n == 0: 
     return new_row 
    else: 
     for i in range(n): 
      value = int((value * (n-i))/(i+1)) 
      new_row.append(value) 
     return new_row 

Jede Hilfe willkommen! Vielen Dank!

Antwort

2

Wie wäre es mit dem Folgenden?

from operator import add 

def pascal_line(n): 
    if n < 2: 
     return [1]*(n+1) 
    l = pascal_line(n-1) 
    return [1] + map(add, l[1:], l[:-1]) + [1] 
+0

Das funktioniert! Irgendwie peinlich von der Einfachheit dieses jetzt, dass ich das sehe ... Danke! – Frank

+0

Auch nur eine Nebenbemerkung, ich denke, es wäre auch syntaktisch korrekt, um ein anderes für die letzten beiden Zeilen hinzuzufügen. – Frank

+1

Nein, die ersten beiden 'return' Anweisungen verlassen die Funktion sofort, so dass die' else' Anweisung überflüssig ist –