递归算法就是方法不断的去调用本身,直到满足某个条件
递归会把一个大问题分解成小问题,一点点的去计算
如题1:求1-100的和
public class Demo { public static void main(String args[]) { System.out.println(add(100)); } public static int add(int num) { if (num ==1) { return 1; } else { return num + add(num - 1); } } }
主方法首先会去执行add(100),返回100+ add(99),add(99)会返回 99+add(98),以此类推,最后把返回值加在一起(100+99+98+。。1)就是5050
题二:斐波那契数列(1,1,2,3,5,8,13~~~),求第n个位置的值是?斐波那契数列递归的定义:F1=1,F2=1,Fn=F(n-1)+(n-2)
public class Demo { public static void main(String args[]) { System.out.print(f(6)); } public static int f(int n) { if (n == 1 || n == 2) { return 1; } else { return f(n - 1) + f(n - 2); } } }
思路如下: