点击上方蓝色字体,关注我 ——
一个在阿里云打工的清华学渣!
今天,我们来聊聊递归函数。为啥突然想到递归?其实就从电影名字《恐怖游轮》《盗梦空间》想到了。
递归是啥?
递归函数大家肯定写过,学校上课的时候,估计最开始的例子就是斐波拉契数列了吧。例如:
int Fibonacci(n) {
if (n < 2) return n;
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
递归函数简而言之就是在一个函数中,又“递归”调用自己。在写递归函数的时候,需要注意的地方就是递归函数的结束条件。用递归函数确实能简化很多算法的实现,比如常见的二叉树遍历等。但往往在写递归函数的时候,最容易出现的问题就是所谓的“栈溢出”。
为什么会有“栈溢出”呢?因为函数调用的过程,都要借助“栈”这种存储结构来保存运行时的一些状态,比如函数调用过程中的变量拷贝,函数调用的地址等等。而“栈