斐波那契数列(Fibonacci sequence),也称之为黄金分割数列,由意大利数学家列昂纳多・斐波那契(Leonardo Fibonacci)提出。斐波那契数列指的是这样的一个数列:1、1、2、3、5、8、13、21、34、……,这个数列从第 3 项开始,每一项都等于前面两项之和。在数学上,斐波那契数列可以被递推的方法定义如下:
F(1)=1,F(2)=1, F(n)=F(n – 1)+F(n – 2)(n ≥ 3,n ∈ N*)
1.斐波那契数列的递归终止条件
显然易见,通过观察斐波那契数列的定义,我们很容易发现当 n=1 或者 n=2 时,是斐波那契数列的递归终止条件,这个时候可以给出斐波那契数列的具体值。
2.斐波那契数列递归终止时候的处理方法
同样的,基于斐波那契数列的递推定义,当斐波那契数列达到终止条件 n=1 或者 n=2 时,我们也很容易发现对应 F(1)=1,F(2)=1,这就是斐波那契数列在递归终止时对应的取值。
3.斐波那契数列的递归重复逻辑提取
按照斐波那契数列的数学定义,F(n)=F(n – 1)+F(n – 2)(n ≥ 3,n ∈ N*),即当 n ≥ 3 时,斐波那契数列中这一项的值等于前面两项的值之和,这样便可以将求解一个比较大的斐波那契数列转化为求解较小数值的斐波那契数列值,这里面有重复逻辑可以递归复用。
代码如下:
import java.util.Scanner; public class Test24 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("请斐波那契数列的项数:"); int num=scanner.nextInt(); int s=func(num); System.out.println("斐波那契数列的第"+num+"项为"+s); } private static int func(int num) { if(num==1||num==2){ return 1; }else{ return func(num-1)+func(num-2); } } }
实现结果: