一步一步写算法之递归和堆栈
看过我前面博客的朋友都清楚,函数调用主要依靠ebp和esp的堆栈互动来实现的。那么递归呢,最主要的特色就是函数自己调用自己。如果一个函数调用的是自己本身,那么这个函数就是递归函数。 我们可以看一下普通函数的调用怎么样的。试想如果函数A调用了函数B,函数B又调用了函数C,那么在堆栈中的数据是怎么保存的呢? 函数A ^ 函数B | (地址递减) 函数C | 如果是递归函数呢,举一个简单的递归函数为例: int iterate(int value) { if(value == 1) return 1; return value + iterate(value -1); } 下面我们使用一个函数进行调用,看看会发生什么情况? void