我在考虑斐波那契数列递归方法的复杂性,我想尝试将数字存储在一个 vector 中,这样我的程序就可以查看该 vector 包含的最后两个数字以生成下一个数字。我写了一个程序,我认为会使用指向 vector 最后一个元素的指针将下一个数字附加到 fibs vector ,但没有任何反应(当我在调用该程序后打印 vector 时,它仍然只包含 0 和 1 我手动附加为边缘条件。
这是范围问题吗?
vector<int>fibs;
template <typename Iterator>
void newfib(Iterator it) {
fibs.push_back(*(it-1)+*(it-2));
}
int main () {
vector<int>fibs;
fibs.push_back(0); fibs.push_back(1);
newfib(fibs.end());
return 0;
}
感谢您的帮助!
最佳答案
您声明了两个具有相同名称的 vector :一个在全局范围内,第二个在 main 函数中。在函数 newfib
中,您附加到全局 vector ,但在 main 函数中,您打印局部,它保持不变。
例如,我建议避免使用全局变量并通过引用传递 vector 。
关于c++ - vector 中的斐波那契数列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18183640/