我正在尝试使用 Guile 方案在终端上打印帕斯卡三角形。
什么是帕斯卡三角?
这是脚本:
#!/usr/local/bin/guile \
-e main -s
!#
(define (fact-iter product counter max-count)
(if (> counter max-count)
product
(fact-iter (* counter product) (+ counter 1) max-count)))
(define (factorial n)
(fact-iter 1 1 n))
(define (n-C-r n r)
(/ (factorial n) (* (factorial (- n r)) (factorial r))
)
)
(define (row-iter r l n)
(cond ((= r 0) ((display 1) (row-iter (+ r 1) l n)))
((and (> r 0) (< r l)) ((display (n-C-r l r)) (display " ") (row-iter (+ r 1) l n)))
((= r l) (display 1))
)
)
(define (line-iter l n)
(cond ((<= l n) ( (row-iter 0 l n)
(line-iter (+ l 1) n) ) )
)
)
(define (pascal-triangle n)
(line-iter 0 n) )
(define (main args)
(pascal-triangle (string->number (car (cdr args)) 10))
)
文件名为 pascalTriangle.scm顶部
的Shebang 符号具有正确的 guile 路径。
我已通过chmod +x pascalTriangle.scm
授予权限
使用命令./pascalTriangle.scm 5运行程序
运行上述脚本时,观察到以下输出/错误:
1Backtrace:在 ice-9/boot-9.scm:
157:5 [catch #t #<catch-closure ac8400> ...]
在未知文件中:
?:4 [apply-smob/1 #<catch-closure ac8400 >]
在 ice-9/boot-9.scm:
63: 3 [call-with-prompt prompt0 ...]
在 ice-9/eval.scm:
432: 2 [eval ##]
在 /home/tarunmaganti/ ./pascalTriangle.scm:
27: 1 [line-iter 0 4]
在未知文件中:
?: 0 [#<unspecified> #<unspecified>]错误:在过程 #<unspecified>:
错误:要应用的类型错误:#<unspecified>
请注意,输出的第一个字符是 1,这意味着代码执行到过程row-iter的第一部分,即(显示 1),之后可能会出现错误。
但是输出显示错误在过程line-iter中。我不明白。
如果程序中的任何错误被指出并纠正以使其打印帕斯卡三角形,我将不胜感激。
Edit1:我编辑了错误/输出文本,我用 HTML 实体替换了 '<' 和 '>'。尖括号内的文字以前是不可见的。