递归转非递归学习一:N的阶乘

之前上《数据结构》的网络课程学习了递归转非递归的机械式转换的方法,然后自己跟着步骤,将N的阶乘转化为非递归:

若N等于1,F(N) = 1; 若N大于1,F(N) = F(N-1)*N; 机械式转化为非递归的代码(模拟栈):

#include <iostream>
#include <stack>
using namespace std;

// (1). 设置工作栈中元素的结构体
struct Datatype
{
    int n;          // 当前输入数据n
    long fn;        // Factorial(n)的返回值
    long fn_1;      // 局部变量Factorial(n-1)
    int retAddr;    // 模仿返回地址,调用第i个递归函数的标示符为i(i=1,2,3,...,t);t+1为栈底标示符,也是结束符
};

long Factorial(int N)
{
    // (3). 增加非递归入口
    // 初始化
    Datatype currArea, areaTemp;    // 当前栈中的元素,和一个临时元素
    currArea.n = N;                 // 当前元素的n值
    currArea.fn = 0;
    currArea.fn_1 = 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值