Scheme中的递归Pascal-找不到正确的算法 (定义(pascal x y) )cond((或(
你非常接近,但你的情况并不像你想象的那样。你有一个类似off-by-1的错误,并且你没有正确地分割你的Scheme中的递归Pascal-找不到正确的算法 (定义(pascal x y) )cond((或(,scheme,lisp,racket,pascals-triangle,Scheme,Lisp,Racket,Pascals Triangle,你非常接近,但你的情况并不像你想象的那样。你有一个类似off-by-1的错误,并且你没有正确地分割你的cond案例 (define (pascal x y) (cond ((or (<= x 0) (<= y 0) (< x y )) 0) ((or (= 1 y) (= x y) ) 1) (else (+ (pascal (- x 1) y) (pascal (- x 1) (- y 1)))))) 我对您的条件进行了一些小的更改,并获
cond
案例
(define (pascal x y)
(cond ((or (<= x 0) (<= y 0) (< x y )) 0)
((or (= 1 y) (= x y) ) 1)
(else (+ (pascal (- x 1) y) (pascal (- x 1) (- y 1))))))
我对您的条件进行了一些小的更改,并获得以下输出:
#lang racket/base
(for ((x (in-range 1 6)))
(for ((y (in-range (add1 x))))
(printf "~a " (pascal x y)))
(newline))
0 1
0 1 1
0 1 2 1
0 1 3 3 1
0 1 4 6 4 1
如果这没有帮助,我可以稍后编辑并将解决方案放入,但这闻起来像是家庭作业,我不想只发布解决方案
(for ((x (in-range 6)))
(for ((y (in-range (add1 x))))
(printf "~a " (pascal x y)))
(newline))
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1