2016-04-04 5 views
1

Ich versuche ein Programm zu schreiben, das eine Zeilen- und Spaltennummer (beide beginnend bei 1) aufnimmt und den Wert von Pascals Dreieck an dieser Zeilen- und Spaltennummer zurückgibt. Hier ist mein Versuch:Schema: Pascal's Triangle

(define (pascal row column) 
    ;;;if column is 1 or row == column, 1 
    (if (or (= column 1)(= row column)) 
    1 
    ;;;else (pascal row-1 column-1) + (pascal row-1 column+1) 
    (+ (pascal (- row 1) (- column 1)) (pascal (- row 1) (+ column 1))))) 

Wenn ich versuche, rufen

(pascal 3 2) 

ich:

Aborting!: maximum recursion depth exceeded 

Jede Idee, was könnte hier los?

Antwort

2

Die beiden Elemente, die für die Position (Zeile, Spalte) kombiniert werden, sind nicht (Zeile-1, Spalte-1) und (Zeile-1, Spalte + 1). (Versuchen Sie, ein Bild zu zeichnen.)

+1

Ah, es ist (Zeile, Spalte) = (Zeile - 1, Spalte - 1) + (Zeile - 1, Spalte)! – bclayman