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