用栈实现斐波那契数列
作者:野牛程序员:2023-06-06 20:15:05 C++阅读 3146
要使用栈实现斐波那契数列,你可以利用栈的先进后出(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类函数
- 下一篇:斐波那契数列的应用价值