用栈实现斐波那契数列
作者:野牛程序员:2023-06-06 20:15:05 C++阅读 3194
要使用栈实现斐波那契数列,你可以利用栈的先进后出(LIFO)的性质来保存计算过程中的中间结果。以下是Python使用栈实现斐波那契数列的示例代码:
def fibonacci_with_stack(n): stack = [] if n <= 0: return stack stack.append(0) if n == 1: return stack stack.append(1) for i in range(2, n): num1 = stack.pop() num2 = stack.pop() stack.append(num2) stack.append(num1) stack.append(num1 + num2) return stack
这个函数接受一个整数参数 n,并返回一个包含斐波那契数列前 n 个数字的栈。首先,我们将0推入栈中。然后,如果 n 大于1,我们将1推入栈中。接下来,我们使用一个循环来计算并推入栈中斐波那契数列的剩余数字。在每一次迭代中,我们从栈中弹出前两个数字,然后将它们的和推入栈中。最后,我们返回栈中的内容。
例如,如果调用 fibonacci_with_stack(5),它将返回一个包含以下元素的栈:[0, 1, 1, 2, 3]。
这是斐波那契数列前5个数字的结果。
以下是使用C++编写的使用栈实现斐波那契数列的示例代码:
#include <iostream>
#include <stack>
std::stack<int> fibonacciWithStack(int n) {
std::stack<int> stack;
if (n <= 0) {
return stack;
}
stack.push(0);
if (n == 1) {
return stack;
}
stack.push(1);
for (int i = 2; i < n; i++) {
int num1 = stack.top();
stack.pop();
int num2 = stack.top();
stack.pop();
stack.push(num2);
stack.push(num1);
stack.push(num1 + num2);
}
return stack;
}
int main() {
int n = 5;
std::stack<int> result = fibonacciWithStack(n);
std::cout << "Fibonacci sequence for n = " << n << ":" << std::endl;
while (!result.empty()) {
std::cout << result.top() << " ";
result.pop();
}
return 0;
}在这个示例代码中,我们使用了 <iostream> 和 <stack> 头文件。fibonacciWithStack 函数接受一个整数参数 n,并返回一个包含斐波那契数列前 n 个数字的栈。我们遵循与之前Python示例相同的逻辑来计算斐波那契数列,并将结果推入栈中。
在 main 函数中,我们调用 fibonacciWithStack 来计算斐波那契数列,并使用 while 循环遍历栈中的元素并打印它们。
如果运行这段代码,并将 n 设置为10,将输出:
0 1 1 2 3 5 8 13 21 34
这是斐波那契数列前10个数字的结果。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

- 上一篇:c++string类函数
- 下一篇:斐波那契数列的应用价值
