数据结构之---栈和递归&函数调用

本文通过分析斐波那契数列的尾递归实现,探讨了递归调用与栈的关系。在函数调用过程中,参数、局部变量和返回地址会被压入栈中。通过一步步的栈操作,详细展示了递归调用如何利用栈的先进后出特性来解决问题。递归与栈的密切关系在计算机科学中广泛应用。
摘要由CSDN通过智能技术生成

更正:以下所指ebx应改为eax。
EBX指“基地址”寄存器,在内存寻址时存放基地址;、
EAX是累加器(accumulator),一般用来保存函数的返回值。

首先说说递归的实现和栈的关系吧,这里引入一个著名的尾递归-斐波那契数列的实现,我用的是C语言编写该函数,

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

我们不妨把函数Fib和return语句中调用的函数看作是不同的函数(只是具有了相同的名称),那么就涉及到了函数调用的知识,我们知道,在函数调用的过程中(比如A函数中调用了B函数),编译器就会把A函数的参数,局部变量及返回地址压入栈中存储,再进行B函数的调用。这里用汇编的思想解释会比较生动,如下图所示,假设传入参数为5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值