【发布时间】:2011-11-17 20:09:08
【问题描述】:
我是 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 过程可能是什么样的??
【问题讨论】:
-
Scheme 中的向量与 C++ 中的
vectors 不同。 Scheme 中的向量在创建时具有固定的大小,并且无法调整大小;有点像 C++ 中用new int[size]分配的数组 -
注明。是的,我看到
vector必须定义为固定大小,这与 C++ 中的<vector>不同。我只是想知道如何在 Scheme 中抽象出“填充某个容器”的概念。