我正在学习Scheme并希望编写一个递归过程,在每个运行级别输出到控制台:
(define (dummy count)
(if (= 0 count)
(runtime)
((display "test" console-i/o-port) (dummy (- count 1)))))
然后测试:
(dummy 10)
但似乎只打印出最后一个调用过程的输出。 我该怎么做才能实现呢?谢谢。 (我正在使用Mit-scheme)
答案 0 :(得分:2)
((display "test" console-i/o-port) (dummy (- count 1)))
这是一个函数调用,其中(display "test" console-i/o-port)
是应该被调用的函数,(dummy (- count 1))
是该函数的参数。由于`(显示“test”console-i / o-port)实际上没有返回函数,这将导致错误(打印测试后)。
要执行您真正想要执行的操作(首先执行(display ...)
然后执行(dummy ...)
),您可以使用begin
表格,如下所示:
(begin (display "test" console-i/o-port) (dummy (- count 1)))
答案 1 :(得分:2)
如果您想要做的是显示“test”count
次(示例中为10次),您可以执行以下操作(假设count
为正):
(define (dummy count)
(if (> count 0)
(begin
(display "test" console-i/o-port)
(dummy (- count 1)))))