Question: import java.util.Arrays; /** * This is a skeleton file for your homework. Edit the sections marked TODO. You * may add new functions. You may
import java.util.Arrays;
/** * This is a skeleton file for your homework. Edit the sections marked TODO. You * may add new functions. You may also edit the function "main" to test your * code. * * You must not add static variables. You MAY add static functions, just not * static variables. * * It is okay to add functions, such as * *
* public static double sumHelper (double[] list, int i, double sumSoFar) { * * * but it is NOT okay to add static variables, such as * * * public static int x; ** * As for homework 1, you must not change the declaration of any method. * * You can edit the main function all you want. I will not run your main * function when grading. */ public class Recursion {
/** * As a model, here is a minValue function, both iteratively and recursively */ /** iterative version */ public static double minValueIterative (double[] list) { double result = list[0]; int i = 1; while (i < list.length) { if (list[i] < result) result = list[i]; i = i + 1; } return result; }
/** recursive version */ public static double minValue (double[] list) { return minValueHelper (list, 1, list[0]); } private static double minValueHelper (double[] list, int i, double result) { if (i < list.length) { if (list[i] < result) result = list[i]; result = minValueHelper (list, i + 1, result); } return result; }
/** * PROBLEM 1: Translate the following sum function from iterative to * recursive. * * You should write a helper method. You may not use any "fields" to solve * this problem (a field is a variable that is declared "outside" of the * function declaration --- either before or after). */ public static double sumIterative (double[] a) { double result = 0.0; int i = 0; while (i < a.length) { result = result + a[i]; i = i + 1; } return result; } public static double sum (double[] a) { return 0; // TODO }
/** * PROBLEM 2: Do the same translation for this in-place reverse function * * You should write a helper method. You may not use any "fields" to solve * this problem (a field is a variable that is declared "outside" of the * function declaration --- either before or after). */ public static void reverseIterative (double[] a) { int hi = a.length - 1; int lo = 0; while (lo < hi) { double loVal = a[lo]; double hiVal = a[hi]; a[hi] = loVal; a[lo] = hiVal; lo = lo + 1; hi = hi - 1; } } public static void reverse (double[] a) { // TODO }
/** * @param args */ public static void main (String[] args) { double[] list0 = new double[] {}; double[] list1 = new double[] { 5 }; double[] list2 = new double[] { -3, 5 }; double[] list3 = new double[] { 2, -3, 5 }; double[] list4 = new double[] { -1, 2, -3, 5 }; double[] list5 = new double[] { 33, 44, 55 };
System.out.println("Display the sum of the array contents"); System.out.println ("list5: " +sum (list5)); System.out.println ("list0: " +sum (list0)); System.out.println ("list1: " +sum (list1)); System.out.println ("list2: " +sum (list2)); System.out.println ("list3: " +sum (list3)); System.out.println ("list4: " +sum (list4));
System.out.println("Reversing the lists"); reverse (list0); System.out.println ("list0: " +Arrays.toString (list0)); reverse (list1); System.out.println ("list1: " +Arrays.toString (list1)); reverse (list2); System.out.println ("list2: " +Arrays.toString (list2)); reverse (list3); System.out.println ("list3: " +Arrays.toString (list3)); reverse (list4); System.out.println ("list4: " +Arrays.toString (list4)); reverse (list5); System.out.println ("list5: " +Arrays.toString (list5)); }
}
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
