recursion - 方案:使用递归填充向量?

标签 recursion vector scheme

我是Scheme新手 - 我目前正在尝试学习语法以及如何递归思考。我来到关于向量的部分,希望能够通过某种循环(当然使用递归)在向量中设置值。我有这个变量:

(define my-vector (make-vector 5))

然后我想使用vector-set!过程来填充它。通常在 C++(我真正熟悉的唯一其他语言)中,这将以迭代方式完成,例如

//...

std::vector<int> myVector;

for(int i = 0; i < 5; ++i)    // populate the vector
    myVector.push_back(i);

std::vector<int>::const_iterator outIter;

for(outIter = myVector.begin();
    outIter != myVector.end(); ++outIter)
    std::cout << *outIter << " ";

std::cout << std::endl;

//...

但是,我知道这种事情应该通过Scheme中的递归来完成。递归 populate-vector 过程可能是什么样子?

最佳答案

(let f ((i 0))
  (when (< i 5)
    (vector-set! my-vector i i)
    (f (+ i 1))))

您可以在线尝试here .

您也可以尝试使用 DO 语法,但大多数人发现很难记住:)

学习使用命名LET非常重要。

另请注意,Scheme 向量只是一个固定大小的数组。

关于recursion - 方案:使用递归填充向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8173589/

相关文章:

C++ 比较 vector 迭代器与实例

lisp - 了解具有本地状态的对象 -- Scheme

scheme - 连续传球风格中的 ANF 转换

list - 如何更新 Scheme (Racket) 中的列表

performance - 求解递归公式的高效算法

javascript - 递归 javascript 代码有问题吗?

C++ 排序数组 => vector 迭代器不兼容

c++ - 填充指向 vector 元素的指针的无序队列

recursion - 不在尾部位置重复

c - 用字符串递归遍历树