斐波那契数列用栈怎么实现c++
时间: 2024-10-07 07:06:55 浏览: 30
C++输出斐波那契数列的两种实现方法
5星 · 资源好评率100%
斐波那契数列是一个经典的递归序列,其中每个数字是前两个数字之和。在C++中使用栈来计算斐波那契数列通常是为了避免递归带来的效率问题,因为递归会重复计算很多子问题。我们可以采用迭代的方式结合栈来存储中间结果。
下面是一个简单的C++代码示例,展示了如何用栈来实现斐波那契数列:
```cpp
#include <iostream>
#include <stack>
int fibonacci(int n) {
if (n <= 0) return 0;
if (n == 1 || n == 2) return 1;
// 使用栈来存储已经计算过的值
std::stack<int> fibStack;
fibStack.push(1);
fibStack.push(1);
for (int i = 3; i <= n; ++i) {
int nextFib = fibStack.top() + fibStack.top();
fibStack.pop();
fibStack.push(nextFib);
}
return fibStack.top(); // 返回第n个斐波那契数
}
int main() {
int num = 10;
std::cout << "The " << num << "th Fibonacci number is: " << fibonacci(num) << std::endl;
return 0;
}
```
在这个代码中,我们从第三个数开始,每次循环通过栈顶元素相加得到下一个斐波那契数,并将它入栈。最后栈顶的数字就是所需的斐波那契数值。
阅读全文