Recursion 在递归过程中显示到输出端口-方案
我正在学习Scheme,希望编写一个递归过程,在每个运行级别向控制台输出:Recursion 在递归过程中显示到输出端口-方案,recursion,scheme,mit-scheme,Recursion,Scheme,Mit Scheme,我正在学习Scheme,希望编写一个递归过程,在每个运行级别向控制台输出: (define (dummy count) (if (= 0 count) (runtime) ((display "test" console-i/o-port) (dummy (- count 1))))) 然后用以下方法进行测试: (dummy 10) 但似乎只有最后调用的过程的输出才会被打印出来。 我该怎么做才能让它发生?谢谢(我正在使用麻省理工学院计划
(define (dummy count)
(if (= 0 count)
(runtime)
((display "test" console-i/o-port) (dummy (- count 1)))))
然后用以下方法进行测试:
(dummy 10)
但似乎只有最后调用的过程的输出才会被打印出来。
我该怎么做才能让它发生?谢谢(我正在使用麻省理工学院计划)
这是一个函数调用,其中(显示“test”控制台i/o端口)
是应该调用的函数,(dummy(-count 1))
是该函数的参数。由于`(显示“测试”控制台i/o端口)实际上不返回函数,这将导致错误(打印测试后)
要执行实际需要执行的操作(首先执行(显示…
,然后执行(虚拟…
),可以使用开始
表单,如下所示:
(begin (display "test" console-i/o-port) (dummy (- count 1)))
如果要执行的操作是显示“test”
count
次数(示例中为10次),则可以执行类似操作(假设count
为正):
你到底想展示什么?计数的当前值是多少?或者“测试”
count
次数?是的,只有“测试”这个词。没关系,对吧。我只想知道为什么只有一个单词“test”打印出来。好的,看看我下面的答案,它就是这样做的,以一种简单的方式感谢你的答案。所以在scheme中,这个构造(abc..D),a的所有内容都必须是这样的:a是一个函数,其余的是参数。为什么我仍然在SCIP书籍中看到类似((打印a)(打印b))的程序?。
(begin (display "test" console-i/o-port) (dummy (- count 1)))
(define (dummy count)
(if (> count 0)
(begin
(display "test" console-i/o-port)
(dummy (- count 1)))))