温馨提示×

如何在c++中使用stack类实现递归

c++
小樊
83
2024-09-25 07:21:12
栏目: 编程语言

在C++中,使用stack类实现递归的方法是将函数的返回地址和参数压入栈中,然后在递归调用结束后,从栈中弹出这些值并恢复调用者的状态。这里是一个简单的示例,展示了如何使用stack类实现递归计算阶乘:

#include <iostream>
#include <stack>

using namespace std;

// 计算阶乘的函数
unsigned long long factorial(int n) {
    if (n == 0 || n == 1) {
        return 1;
    }

    // 创建一个栈对象
    stack<unsigned long long> s;

    // 将参数压入栈中
    s.push(n);

    // 递归调用
    unsigned long long result = factorial(n - 1);

    // 从栈中弹出参数并恢复调用者的状态
    n = s.top();
    s.pop();

    // 返回阶乘结果
    return n * result;
}

int main() {
    int n = 5;
    cout << "Factorial of "<< n << " is: " << factorial(n) << endl;
    return 0;
}

在这个示例中,我们使用stack类来保存factorial函数的参数和返回地址。当递归调用发生时,我们将参数压入栈中,并在递归调用结束后从栈中弹出这些值。这样,我们可以实现递归计算阶乘的功能。

0