/*************************************************************************
* Name:
* NetID:
* Precept:
*
* Description: Four methods, each of which produce a string of N
* consecutive x's. (e.g., x, xx, xxx, xxxx)
*************************************************************************/
public class Repeat {
// returns a String of N consecutive x's
public static String repeat1(int N) {
char[] temp = new char[N];
for (int i = 0; i < N; i++)
temp[i] = 'x';
return new String(temp);
}
// returns a String of N consecutive x's
public static String repeat2(int N) {
if (N == 0) return "";
else if (N == 1) return "x";
else return repeat2(N / 2) + repeat2(N - (N / 2));
}
// returns a String of N consecutive x's
public static String repeat3(int N) {
if (N == 0) return "";
String temp = repeat3(N / 2);
if (N % 2 == 0) return temp + temp;
else return temp + temp + "x";
}
// returns a String of N consecutive x's
public static String repeat4(int N) {
String s = "";
for (int i = 0; i < N; i++)
s = s + "x";
return s;
}
public static void main(String[] args) {
int N = Integer.parseInt(args[0]);
double start, end;
String s;
// run experiment 1 - invoke repeat1
start = System.currentTimeMillis() / 1000.0;
s = repeat1(N);
end = System.currentTimeMillis() / 1000.0;
StdOut.println("Elapsed time for repeat1() = " + (end - start));
// run experiment 2 - invoke repeat2
start = System.currentTimeMillis() / 1000.0;
s = repeat2(N);
end = System.currentTimeMillis() / 1000.0;
StdOut.println("Elapsed time for repeat2() = " + (end - start));
// run experiment 3 - invoke repeat3
start = System.currentTimeMillis() / 1000.0;
s = repeat3(N);
end = System.currentTimeMillis() / 1000.0;
StdOut.println("Elapsed time for repeat3() = " + (end - start));
// run experiment 4 - invoke repeat4
start = System.currentTimeMillis() / 1000.0;
s = repeat4(N);
end = System.currentTimeMillis() / 1000.0;
StdOut.println("Elapsed time for repeat4() = " + (end - start));
}
}