Pascal的三角形扭曲

时间:2014-09-16 02:45:09

标签: scheme

假设我们想要在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))))))

1 个答案:

答案 0 :(得分:2)

在每行的开头添加数量减少的空格。确定最后一行长度和要打印的当前行长度的数字。