递归算法就是通过将问题不断分解为同类子问题而解决问题的方法。
绝大多数编程语言是支持函数的自调用的,也就是支持函数自身来进行递归。
根据计算理论,可以证明出递归可以完全取代循环,因此在很多函数编程中习惯使用递归来实现循环。
但是递归有一个问题就是需要不断的调用函数,会有较大的开销。
递归的函数需要逐级的返回return。
每次return只能返回一级,也就是展开一个函数栈,从当前函数回到主调函数,然后继续执行。
递归函数可以直接
return 函数本身,来实现从最底层的返回值直接完全返回。
注意递归边界条件,避免无限递归问题。
如:
int func(n) {
if (n==1){return 1;}
return func(n-1);
}