# Write a recursive version of this method.

Java Recursive Problems (4 problems):

Problem I. We define the Shaw strings as follows:

1. abb is a Shaw string.

2. bca is a Shaw string.

3. If S is a Shaw string, so is SaS.

4. If U and V are Shaw strings, so is UbV.

Here a, b, c are constants and S,U,V are variables. In these rules,

the same letter represents the same string. So, if S = abb,

rule 3 tells us that abbaabb is a Shaw string.

In rule 4, U and V represent Shaw strings, but they may be different.

Write the method

public static boolean isShaw(String in)

that returns true if in is a Shaw string and false otherwise.

Problem II.

public static double getLargest(double [] a, int low, int high)

that returns the largest number in the array slice a[low:high].

If low > high, it throws an IllegalArgumentException. Otherwise, it checks if

the slice has 1 item. If so, it returns that value.

If the slice has 2 or more items, it divides the slice into 2 equal subslices,

computes the largestvalues of the 2 subslices and returns the largest of the 2 values.

Problem III. We define the Raju numbers as

Raju(0) = 1

Raju(1) =1

Raju(n) = Raju(n-1) + Raju(n-2) + 3 if n >= 2

public static long Raju(int n)

returns the n-th Raju number. If n < 0, the method throws an IllegalArgumentException.

Problem IV. Write the method

public static int binarySearch(double[] arr, int low, int high, double inq)

that search the array slice arr[low:high] for an occurrence

of inq. If inq occurs in arr, return an index i such that

arr[i] == inq. Otherwise, return -1.

Assume that arr is sorted in increasing order. Write a recursive version of this method.

The Output:

run:

Checking Hw

==============

We check isShaw

isShaw(“abbbabb”) is true

isShaw(“abbbaca”) is false

isShaw(“abbbabbaabbbabb”) is true

isShaw(“abbbbcabca”) is false

isShaw(“abbbbcaaabbaabb”) is false

isShaw(“abbbbcaabca”) is true

We test getLargest

The array is arr = { 6.9, -10.3, 6.7, 2.5, 16.4, -3.1}.

The largest of arr[0:6] is

We got an illegal argument exception.

The largest of arr[2:1] is

We got an illegal argument exception.

The largest of arr[2:2] is 6.7

The largest of arr[0:4] is 16.4

We test the Raju numbers.

We test the Raju numbers.

Raju(-1) is

We got an illegal argument exception.

Raju(2) is 5

Raju(4) is 17

Raju(10) is 353

We test binary search.

The input array is table = { 2, 4, 6, 8, 10, 12, 14 }.

2 was found in table[0:6] at index 0

3 was found in table[0:6] at index -1

4 was found in table[2:6] at index -1

12 was found in table[2:5] at index 5

This is all folks. I hope that your program worked.

BUILD SUCCESSFUL (total time: 2 seconds)