Я пытаюсь распечатать треугольник Паскаля на терминале, используя схему хитрости.
Что такое треугольник Паскаля?< /а>
Вот сценарий:
#!/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-close ac8400› ...]
В неизвестном файле:
?: 4 [apply- smob/1 #‹catch-close 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›
Обратите внимание, что первый символ вывода равен 1, что означает, что код выполнялся до первой части процедуры row-iter, т. е. (отображение 1), и после этого может быть ошибка.
Но вывод говорит, что ошибка в процедуре line-iter. Я не понимаю.
Буду признателен, если любая ошибка в программе будет указана и исправлена, чтобы заставить ее печатать треугольник Паскаля.
Edit1: я отредактировал текст ошибки/вывода, заменил «‹» и «›» на объекты HTML. Текст внутри угловых скобок раньше не был виден.