import java.util.List; import java.util.Stack; import java.util.ArrayList; impor
ID: 3823104 • Letter: I
Question
import java.util.List;
import java.util.Stack;
import java.util.ArrayList;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class IterativeExample2 {
private static void printFriends(Friend friend, int distance) {
/** if (distance == 0) {
System.out.println(friend);
} else {
for (Friend f : friend.getFriends()) {
printFriends(f, distance - 1);
}
}
**/
}
/**
* @param args
*/
public static void main(String[] args) {
List<Friend> friendList = new ArrayList<Friend>();
Friend reuben = new Friend("Reuben");
Friend soumitra = new Friend("Soumitra");
Friend ken = new Friend("Ken");
Friend elisa = new Friend("Elisa");
Friend isaac = new Friend("Isaac");
friendList.add(reuben);
friendList.add(soumitra);
friendList.add(ken);
friendList.add(elisa);
friendList.add(isaac);
reuben.addFriend(soumitra);
reuben.addFriend(ken);
soumitra.addFriend(reuben);
ken.addFriend(reuben);
ken.addFriend(elisa);
elisa.addFriend(ken);
elisa.addFriend(isaac);
isaac.addFriend(elisa);
BufferedReader inputReader = new BufferedReader(new InputStreamReader(System.in));
String inputName = "";
String inputValue = "";
Friend inputFriend = null;
int inputInt = 0;
System.out.println("Blank entry at any prompt exits program.");
while (true) {
System.out.print("Enter a person's name: ");
try {
inputName = inputReader.readLine();
} catch (IOException e) {
System.err.println("Error reading from console.");
}
if (inputName.equals("")) {
System.out.println("Run complete.");
System.exit(0);
}
inputFriend = new Friend(inputName);
if (friendList.contains(inputFriend)) {
inputFriend = friendList.get(friendList.indexOf(inputFriend));
System.out.print("Enter a non-negative integer: ");
try {
inputValue = inputReader.readLine();
} catch (IOException e) {
System.err.println("Error reading from console.");
}
if (inputValue.equals("")) {
System.out.println("Run complete.");
System.exit(0);
}
try {
inputInt = Integer.valueOf(inputValue);
} catch (NumberFormatException e) {
System.err.println("Must enter integer.");
continue;
}
if (inputInt < 0) {
System.out.println("Must be non-negative");
} else {
printFriends(inputFriend, inputInt);
}
} else {
System.out.println(inputFriend + " not found.");
}
}
}
}
import java.util.ArrayList;
import java.util.List;
public class Friend {
private String name;
private List<Friend> friendList = new ArrayList<Friend>();
public Friend(String name) {
this.name = name;
}
public void addFriend(Friend friend) {
this.friendList.add(friend);
}
protected List<Friend> getFriends() {
return this.friendList;
}
public String toString() {
return this.name;
}
@Override
public boolean equals(Object o) {
if (o instanceof Friend) {
return this.name.equals(((Friend) o).name);
}
return false;
}
}
How to convert recursive to iterative in the comment of the first class
Explanation / Answer
The iterative version is given below: Here we have converted the recursion version into the normal for-loop with if-else condition.
private static void printFriends(Friend friend, int distance) {
for (Friend f : friend.getFriends())
{
if (distance == 0) {
System.out.println(friend);
}
else
{
distance--;
}
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.