【发布时间】:2016-10-26 18:05:37
【问题描述】:
我正在尝试定义一个函数,该函数在方案中的 sexpr 中标记尾部调用与非尾部调用。 其定义如下:
TCS ::= SYMBOL | NUMBER | IF | FUNCTION-CALL
IF ::= (if TCS TCS TCS)
FUNCTION-CALL ::= (TCS TCS...)
输入/输出的示例是:
(mark-tail-calls '(if (a (b c)) (e (f g) h) i) (j (k 7)))
=> (if (non-tail-call a (non-tail-call b c)) (non-tail-call e (non-tail-call f g) h) i) (tail-call j (non-tail-call k 7))
我了解尾调用和非尾调用之间的区别,但考虑到我对方案没有什么经验,我很难编写函数。任何帮助/指向正确方向将不胜感激
【问题讨论】:
标签: scheme tail-recursion