Lesson 17 Starter Code

RecursionExample.java

public class RecursionExample {
  public static int add(int x, int y) {
    System.out.println("Calling add(" + x + ", " + y + ")");
    if (y == 0) {
      return x;
    }
    if (y > 0) {
      int answer = add(x + 1, y - 1);
      System.out.println("Returned to add(" + x + ", " + y + ")");
      return answer;
    }
    if (y < 0) {
      return add(x - 1, y + 1);
    }
    // this shouldn't happen
    return -1;
  }

  public static int recursiveFactorial(int n) {
    // Exercise: implement this!

    return -1;
  }

  public static int fib(int n) {
    // Exercise: implement this!

    return -1;
  }

  public static void main(String[] args) {
    System.out.println(add(7, 2));
    // System.out.println(recursiveFactorial(20));

    // Uncomment below when you've implemented fib(n)
    // It should return 13
    // System.out.println(fib(7));
  }
}

PartTwo.java

import java.util.ArrayList;

public class PartTwo {
  public static int sumDigits(int num) {
    if (num < 0) {
        return sumDigits(-num);
    }
    if (num < 10) {
        return num;
    }
	  // implement the rest...

    return 0;
  }

  public static void printBeforeRecursion(ArrayList<String> list, int i) {
    if (i == list.size()) {
        return;
    }
    System.out.println(list.get(i));
    printBeforeRecursion(list, i+1);
}

  public static void printAfterRecursion(ArrayList<String> list, int i) {
    if (i == list.size()) {
        return;
    }
    printAfterRecursion(list, i+1);
    System.out.println(list.get(i));
  }

  
  public static void main(String[] args) {
    ArrayList<String> list = new ArrayList<>();
    list.add("a");
    list.add("b");
    list.add("c");
    list.add("d");
    list.add("e");
    System.out.println("Printing " + list + " before recursion:");
    printBeforeRecursion(list, 0);

    System.out.println();

    System.out.println("Printing " + list + " after recursion:");
    printAfterRecursion(list, 0);

    // uncomment the below when you implement the sumDigits exercise
    // System.out.println(sumDigits(319));
  }
  
}