import java.util.Scanner; public class Test { public static int func(int x) { if (x == 0) { return 0; } else if (x == 1) { return 1; } return x = func(x-2) + func(x - 1); } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int x = scanner.nextInt(); System.out.println(func(x)); } } 先上代码
【斐波那契数列】:从第3项开始每一项的值等于前两项之和,那么第N项的前两项为【n-2】、【n-1】(笔者因为习惯写成了第x项)
x==0 或 1 时代指斐波那契数列前两项(归 时为终止条件)
当代码运行到 return x = func(x-2) + func(x - 1); 这一行时 首次运行的方法并没有完成,此时func(x-2)和func(x-1)会算出这两项的数值;但同时方法 func(x-2)和 func(x-1)里面同样有这两项,则函数走到这里又会进入这个方法 直到 (x-2==0),(x-1==1)时,进入方法终止,数值开始返回。每次进入方法的时候叫做递, 每次返回算好的值时叫做归。