当前位置:首页 C++ > 正文

用栈实现斐波那契数列

作者:野牛程序员: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,将输出:

Fibonacci sequence for n = 10:
0 1 1 2 3 5 8 13 21 34

这是斐波那契数列前10个数字的结果。

野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击