数据结果:栈与递归

栈有一个重要应用是在程序设计中实现递归。递归是计算机 科学和数学中一种解决问题的及其重要的方法。在数据结构中,可以用它来设计简单。易于理解的算法,特别是在一些具有递归定义的结构上设计算法。

递归的概念

一个直接或间接地调用自己的函数,称作递归函数。递归是程序设计中一个强有力的方法

递归函数和运行时栈

栈还有一个重要应用就是在程序设计语言中实现函数调用。当一个函数在运行期间调用另一个函数时,在运行被调用函数之前,系统需要将实际参数和返回值地址等数据传递给被调函数,当函数调用时,这些数据与局部变量一起构成一条“工作记录”,被压入系统提供的栈

int fact(int w)
{
    if(w==0)
    return 1;
    else
    t=fact(w-1)
    return (w*t);
}

void Hanoi(int n,char A,char B,char C)
{
    if(n>0)                //n=0是最小子问题,不做任何动作,直接退出 
    {
        Hanoi(n-1,A,C,B);    //子问题①:将A上面的n-1个盘子移到B上 
        Move(A,n.C);        //将编号为n的圆盘从A移到C 
        Hanoi(n-1,B,A,C);    //子问题②:将B上的n-1个盘子移到C上 
    }
}

long Fib(int n)
{
    if(n==1||n==2)
    return 1;
    else
    return Fib(n-1)+Fib(n-2);
}

long FibIter(int n)
{
    long oneback,twoback,current;
    oneback=1;
    twoback=1;
    
    if(n==1||n==2)
    return 1;
    else
    {
        for(int i=0;i<n;i++)
        {
            current=oneback+twoback;
            twoback=oneback;
            oneback=current;
        }
    }
    return current;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值