今天,我们来谈谈递归函数。为什么突然想到递归?其实从电影的名字就想到了《恐怖游轮》《盗梦空间》。什么是递归?你必须写过递归函数。我在学校的时候,我猜第一个例子就是斐波那契数列。例如:intFibonacci(n){if(n<2)returnn;returnFibonacci(n-1)+Fibonacci(n-2);}递归函数只是一个“递归”调用自身的函数。在写递归函数的时候,需要注意的是递归函数的结束条件。使用递归函数确实可以简化很多算法的实现,比如常见的二叉树遍历。但是往往在写递归函数的时候,最容易出现的问题就是所谓的“栈溢出”。为什么会出现“堆栈溢出”?因为函数调用的过程必须依赖“栈”这个存储结构来保存运行时的一些状态,比如函数调用时的变量拷贝、函数调用的地址等,而“栈”往往存储空间有限。当超出其存储空间时,将抛出著名的异常/错误“StackOverflowError”。我们以一个简单的加法为例,例如:intsum(intn){if(n<=1)returnn;returnn+sum(n-1);}std::cout<
