假设我们想要在Scheme中生成Pascal的三角形,但有一点扭曲。对于函数(pascal左右深度),左边是三角形左边的数字,右边是右边的数字。例如,(pascal 1 1 5)的调用将返回
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
并致电(pascal 1 2 5)将返回
1
1 2
1 3 2
1 4 5 2
1 5 9 7 2
1 6 14 16 9 2
如何将三角形打印出来,使其像示例一样间隔?
到目前为止,我的代码如下所示,但所有这些都是返回哪个数字应该位于标准三角形内的哪个位置。
(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))))))
答案 0 :(得分:2)
在每行的开头添加数量减少的空格。确定最后一行长度和要打印的当前行长度的数字。