1.概念
递归是一种自身调用自身的函数,多通过调用自身缩小计算范围。有两个主要的点:
1.结束条件
2.调用自身的关联关系,可以理解为如何缩小运算的范围的逻辑。
2.举例
2.1 求总数
求;{1,2,3,4,5,6,7,8,9} 和
public static void main(String[] args) {
int [] arr ={1,2,3,4,5,6,7,8,9};
final int sum = sum(arr, 0);
System.out.println(sum);
}
//1.结束条件
//2.关联关系
private static int sum(int[] arr, int i) {
//结束条件==也是最基本的问题
if (i==arr.length){
return 0;
}
//缩小范围的逻辑
return arr[i]+sum(arr,i+1);
}
2.2 链表删除item
从链表里删除一个元素
// node 链表头结点,value 要删除的元素
public Node removeElement(Node head, E value) {
if (head == null)
return null;
head.next = removeElement(head.next, value);
//如果当前元素匹配要删除的元素,返回head.next 相当于删除该节点。
return head.e ==value? head.next:head;
}
2.3 斐波那契数列
0, 1, 1, 2, 3, 5, 8, 13, 21, ···
/**
* 求 num位置的值
* @param num
* @return
*/
int fbnxsl(int num) {
if (num == 0 || num == 1) {
return num;
}
return fbnxsl(num - 1) + fbnxsl(num - 2);
}