recursion - 在递归过程中显示到输出端口 - 方案

标签 recursion scheme mit-scheme

我正在学习Scheme,想要编写一个递归过程,在每个运行级别输出到控制台:

(define (dummy count)
    (if (= 0 count)        
        (runtime)
        ((display "test" console-i/o-port) (dummy (- count 1)))))

然后测试:

(dummy 10)

但似乎只有最后调用的过程的输出才会被打印出来。 我应该做什么才能实现它?谢谢。 (我正在使用 Mit-scheme)

最佳答案

((display "test" console-i/o-port) (dummy (- count 1)))

这是一个函数调用,其中 (display "test"console-i/o-port) 是应该调用的函数,(dummy (- count 1)) 是该函数的参数。由于 `(display "test"console-i/o-port) 实际上并不返回函数,这将导致错误(在打印 test 后)。

要执行您真正想做的事情(首先执行 (display ...) 然后执行 (dummy ...)),您可以使用 开始形式如下:

(begin (display "test" console-i/o-port) (dummy (- count 1)))

关于recursion - 在递归过程中显示到输出端口 - 方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8646983/

相关文章:

python - 使用递归返回数字的位数

c++ - 如何使用分治法和迭代器添加所有 vector 元素?

scheme - LISP clause for and clause let ¿why?, making a programming language in racket using ragg

scheme - 如何在 Racket 中自定义程序的打印?

c - C 语言的快速排序算法

string - 将Scheme表达式转换为字符串

vim - 安装 slimv 时出错

mit-scheme - 如何为 mit-scheme 配置 SublimeREPL?

c - 如果此代码中 consed 对象的 car 和 cdr 是整数,如何打印它们?

c - 用c语言编写一个递归函数求2到50的偶数之和