1

我在这里找不到类似的问题,但我正在尝试为课程编写一个程序,因此非常感谢提示!我基本上对如何实现这一点感到困惑,但这里有一个关于它应该如何工作的例子。(index 5)应该返回列表(1 2 3 4 5)。我有几个想法,他们可以工作吗?

  1. 我将参数设为一个全局变量,每次递归调用该函数时都会递增该变量。到目前为止,我遇到的问题是使用 set! 返回一个列表,但输出看起来像这样 (#value #value....)

  2. 编写一个简单的递归函数,给出列表 (5 4 3 2 1) 然后反转它,但我能做到吗?

4

2 回答 2

0

我会选择解决方案 2,因为它是迄今为止最干净、最简单的选择。你只需要弄清楚递归。提示:在 处达到基本情况(index 0),它应该返回空列表。之后的逆向可以通过将实际递归放入辅助函数中来完成:

(define (index-r n)
  ...)

(define (index n)
  (reverse (index-r n)))

(或使用命名let循环。)

于 2012-09-25T10:51:37.723 回答
0

编写一个简单的递归函数,给出列表 (5 4 3 2 1) 然后反转它,但我能做到吗?

为什么不直接编写一个给出列表的递归函数 (1 2 3 4 5) ?在“伪代码”中,以便我不为您做:

f(x) = cons x (f(x+1))
f(5) = (list 5)

然后,调用f(1)……</p>

于 2012-09-26T07:22:07.903 回答