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

avatar
作者
筋斗云
阅读量:0

在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函数的参数和返回地址。当递归调用发生时,我们将参数压入栈中,并在递归调用结束后从栈中弹出这些值。这样,我们可以实现递归计算阶乘的功能。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!