#include <iostream>
#include <stack>
using namespace std;
// 递归实现阶乘
int factorial_recursive(int n)
{
if (n <= 1) return 1;
return n * factorial_recursive(n - 1);
}
// 使用栈模拟递归调用(更通用的转换方法)
int factorial_stack(int n)
{
stack<int> s;
s.push(n);
int result = 1;
while (!s.empty())
{
int current = s.top();
s.pop();
if (current <= 1)
{
continue;
}
result *= current;
s.push(current - 1);
}
return result;
}
int main()
{
cout << "递归结果: " << factorial_recursive(5) << endl;
cout << "栈模拟结果: " << factorial_stack(5) << endl;
return 0;
}
用C++语言编写将递归函数转为循环遍历的示例
最新推荐文章于 2026-06-16 20:40:23 发布
921

被折叠的 条评论
为什么被折叠?



