Recurrence Relation and Recursion
Fibonacci problems
- recursive calls
 - we can write T(n) like this: T(n) = T(n - 1) + T(n - 2) + O(1) . For the base case, we have T(0) = O(1), T(1) = O(1)
 
Recursive Accessor Methods
1 print the linked list in reverse order
  public static void reversePrint (LN l)
  {
    if (l == null)
      return;
    else {
      reversePrint(l.next);
      System.out.println(l.value);
    };
  }
note, if use iterative method, we need stack and iteration.
2 search the linked list node
  public static LN search (LN l, int value)
  {
    if (l == null || l.value == value)
      return l;
    else
      return search(l.next, value);
  }
Recursive Mutator Methods
Recursive mutator methods follow a pattern in which they return a reference to the mutated linked list 
(instead of being void); such a generalization allows for a simple recursive implementation of the method. 
This approach takes a bit of getting used to, but it is a pattern that is used repeatedly here and in the 
recursive processing of tree with mutators.
1 insertRear
  public static LN insertRear (LN l, int value)
  {
    if (l == null)
      return new LN(value,null);
    else {
      l.next = insertRear(l.next, value);
      return l;
    }
  }
2 insertOrdered
  public static LN insertOrdered (LN l, int value)
  {
    if (l == null || value < l.value)
      return new LN(value,l);
    else {
      l.next = insertOrdered(l.next, value);
      return l;
    }
  }
3 removeFirst
  public static LN removeFirst(LN l, int value)
  {
    if (l == null)
      return null;
    else
      if (l.value == value)
        return l.next;
      else {
        l.next = removeFirst(l.next, value);
        return l;
      }
  }
4 removeAll
  public static LN removeAll(LN l, int value)
  {
    if (l == null)
      return null;
    else
      if (l.value == value)
        return removeAll(l.next,value);
      else {
        l.next = removeAll(l.next, value);
        return l;
      }
  }
- how to solve the recurrence relation  (refer to:  https://www.youtube.com/watch?v=b3GG6J_fOZw&list=PLSVu1-lON6LybCHQs8Io_EhyrEQ4b1xAF&index=1)
- substitution
 - recursion tree method
 - master method