递归:本质上,将原来的问题转化为更小的同一问题。
public class Sum {
public static int sum(int[] arr){
return sum(arr , 0);
}
//计算arr[L ..... n]这个区间内所有数字的和 ,L为数组左边界
private static int sum(int[] arr , int l){
if(l == arr.length)
return 0;
return arr[l] + sum(arr , l + 1);
}
public static void main(String[] args) {
int[] nubs = {1,2,3,4,5,6,7,8};
System.out.println(sum(nubs));
}
}
链表天然具有递归性
使用递归解决leetcode 203 删除数组中的元素
public class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
class Solution3 {
public ListNode removeElements(ListNode head, int val) {
if(head == null)
return null;
head.next = removeElements(head.next ,val);
return head.val==val ? head.next : head;
// ListNode res = removeElements(head.next , val);
// if(head.val == val){
// return res;
// }else {
// head.next = res;
// return head;
// }
}
}