第二节 递归

  递归是一个语言中最难理解的内容之一,它是通过自己调用自己的方法,来进行运算的方法。关于递归有一个非常有意思的定义:

递归:参见“递归”

  在生活中,我们也会遇到这样的递归例子:

导员:“你给任课老师请假就行了”。
任课老师:“去让你导员给你写个假条”。

  其实在以前的学习中,我们也遇到过递归的思想,数学归纳法就是:

1是正整数
如果k是正整数,证明k+1也是正整数
若①和②满足,则证明序列n是正整数序列

  C语言和C++是支持递归的。但是,在使用递归的时候,大家应该注意跳出递归的条件,不然就会发生上面导员和任课老师模型之间的无限循环问题。C/C++语言中的递归一般是通过函数来实现的:

1
2
3
4
5
6
7
func(n) {
if(xxx) {
func(n+1);
}
else
return xxx;
}

  像我们常用的求最大公约数最小公倍数的方法,和hdu2018的母牛问题,都是递归的经典题目。