数据结构---栈与递归

递归

  • 递归实际上是自己调用自己,知道满足终止条件,在进行回溯的过程,不好理解可以参考下列程序,实际上就是将递归过程中的单个元素写开来的形式。

  • 先从主函数里面开始,分别调用了fun4-->fun3-->fun2-->fun1。fun1中获得返回值后再往上一级返回,fun1-->fun2-->fun3-->fun4-->a

  • 由于栈的现进后出与上述过程完全一致,所以可以使用栈来实现递归,递归的过程就是先进栈在出栈的过程

  • 先按照顺序进行调用

graph LR A[a] -->B(fun1)-->C(fun2)-->D(fun3)-->E(fun4)
  • 然后回溯
graph LR E(fun4)-->D(fun3)-->C(fun2)-->B(fun1)-->A[a]
#include <iostream>
#include <string>
using namespace std;

int fun1(int i)
{
    return i+1;
}

int fun2(int j)
{
    return fun1(j+1);
}

int fun3(int k)
{
    return fun2(k+1);
}

int fun4(int l)
{
    return fun3(l+1);
}

int main()
{
    int a = fun4(0);
    cout<<"a="<<a<<endl;
    return 0;
}
posted @ 2021-09-03 19:32  Vicuna  阅读(116)  评论(0)    收藏  举报