|
|
Re: Using Recursion
|
Posted: Sep 28, 2004 9:00 PM
|
|
I know it is classroom assignemnt. Here is your solutions. There are two versions of each problem. Version II of each solution is better in the sense that they avoid creating new string objects.
package test;
import javax.swing.JOptionPane;
public class Recursion {
public static void main(String[] args) {
String name = getName();
//printRecursively (name);
//printRecursively (name, 0);
//printInLoop_1(name);
//printInLoop_2(name);
}
// Version I
public static void printRecursively (String name ) {
if ( name == null || name.length() == 0 ) {
return;
}
System.out.println (name);
// Call the method recursively
printRecursively (name.substring(1));
}
// Version II
public static void printRecursively (String name, int start ) {
int len = 0 ;
if ( name == null ) {
return;
}
else {
len = name.length();
if ( start >= len ) {
return;
}
}
for ( int i = start; i < len; i++ ) {
System.out.print(name.charAt(i));
}
System.out.println ();
// Call the method recursively
printRecursively (name, ++start);
}
// Version I - Loop
public static void printInLoop_1(String name){
if ( name == null ) {
return;
}
int len = name.length();
for ( int i = 0 ; i < len; i++ ) {
System.out.println(name.substring(i));
}
}
// Version II - Loop
public static void printInLoop_2(String name){
if ( name == null ) {
return;
}
int len = name.length();
for ( int i = 0 ; i < len; i++ ) {
for ( int j = i; j < len; j++ ) {
System.out.print(name.charAt(j));
}
System.out.println();
}
}
public static String getName() {
String name = null;
name = JOptionPane.showInputDialog("Please type your name.");
return name;
}
}
|
|