递归的结构其实很简单,两部分组成
1、结束递归的条件,要不然会无限递归下去
2、就是递归的公式,以什么样的方式调用自己
还有比较复杂的递归,就是双线和多线递归
这个就是a调用b,b再调用c,c再调用a,等等的方式多个函数之间的互相调用
每个函数都至少有这两部分组成
一个函数自己调用自己。
通常最简单的例子是:计算阶乘,即 5! = 5*4*3*2*1
int factorial(int n) {
if (n == 0 || n == 1) {
return 1; // base condition
} else {
return (n * factorial(n-1)); // recursive call
}
}
把自己想象成电脑,试一试 factorial(5)
就会发现 return 5*4*3*2*1
Remark:
递归函数计算往往比较慢,因太频繁地自己调用自己,很多情况下会有更好的算法哦。
重复调用本身(求阶乘就是不停滴调用本身函数,最后逐个返回)
从阶乘那开始理解,类似阶乘