一、递归是什么
递归算法(英语:recursion algorithm)在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法。递归式方法可以被用于解决很多的计算机科学问题,因此它是计算机科学中十分重要的一个概念。绝大多数编程语言支持函数的自调用,在这些语言中函数可以通过调用自身来进行递归。计算理论可以证明递归的作用可以完全取代循环,因此在很多函数编程语言(如Scheme)中习惯用递归来实现循环。
二、为什么要使用递归
递归的作用 在编写程序时,要解决一些多次重复的方法,我们先会使用到循环语句。但是随着次数的增加和逻辑的复杂,循环在使用时将会变得庞大且复杂,通过正面思维去解决问题将无比困难,所以可以通过递归+递推来解决问题。
三、递归在代码中的实现
调用案例:声明一个方法
public static void dis(){
dis(); \\通过自己调用自己来实现循环
}
案例:计算n!
利用n! = n * (n-1)! 这个公式来计算阶乘。
设:编写一个计算阶乘的方法f(n)
f(n) = ?
1、n * f(n-1) n>0
2、1 n=0 (源点)
四、总结
其实递归和循环是非常相似的,但是二者在解决问题是却存在差异,循环是从正面去解决问题,例如:f(5)、f(4)、f(3)、f(2)、f(1)。循环的解决方式就是从f(5)推f(4),再推f(3),以此类推,无论下一个数有多难算,都必须计算出来才能进行下一步。
但是递归解决问题就是先一路推到f(1),中间的详细数据是不计算的,再通过f(1),一路推到f(5)来解决问题。这种解决方式称为递推。