递归是一种算法思想,其原理是通过某一段代码的不断自身调用来将复杂的问题简单化,但必须使其朝着可控的方向变化,同时设定约束条件保证其在有限步骤内结束并返回结果。
下面通过求解斐波那契数列中第n项的大小来说明递归算法的实现逻辑。
public class feibonaqieshulie
{
public static void main(String[] args)
{
A1 a = new A1();
double b = a.fbnq(12);
System.out.println(b);
}
}
class A1
{
//定义方法进行斐波那契数列第n项的求解
public double fbnq(int n)
{
//约束条件1
if(n == 0)
{
return 0;
}
//约束条件2
else if(n == 1)
{
return 1;
}
else
{
//递归的前进方向
return this.fbnq(n - 1) + this.fbnq(n - 2);
}
}
}
由于斐波那契数列的特殊性, 如果通过正常逻辑从第一项开始逐一计算,那么问题会非常复杂。于是采用递归算法,斐波那契数列的第n项是第n-1项与第n-2项的和,第n-1项等于第n-2项与第n-3项的和,同理,每一项都等于前两项的和,因此不断调用自身,求解之前项的大小,知道前进到第1项和第0项,因为这两个条件是已知的,因此运行到该约束条件后开始返回数值,得到最终结果。