#java #recursion
#java #рекурсия
Вопрос:
В моем классе Java мы только сейчас узнаем о рекурсии, и это проблема, которую меня попросили выполнить. В текстовом файле есть несколько строк сотрудников в этом формате: Имя, часы, заработная плата, босс.
У меня настроен сканер, и все работает хорошо, за исключением того, что есть один главный босс («N / A» — это то, что находится под его полем boss), а затем он разделяется на разных людей (в текстовом файле они не в порядке.) Задача состоит в том, чтобы напечатать их в порядке ранжирования, т.Е.:
Имя босса: Заработная плата
—2-й сотрудник: Заработная плата
—-3-й сотрудник: Заработная плата
— 4-й сотрудник: Заработная плата
Это должно быть сделано рекурсивно, и я полностью в тупике. Я просто не могу понять, что использовать в качестве «базового варианта» или как его даже запустить.
Спасибо за любую помощь, это очень ценится.
Ответ №1:
Вам нужно написать метод, который находит всех сотрудников с данным боссом. Затем напишите другой метод, который, учитывая имя босса и уровень, находит босса и довольно быстро печатает его / ее, затем находит всех своих сотрудников (вызывая 1-й метод) и рекурсивно вызывает себя для каждого сотрудника.
Вызовите этот второй метод из main с «N / A» в качестве имени босса и 1 в качестве уровня.
Ответ №2:
что ж, проверьте этот простой исходный код, возможно, это поможет вам начать…
import java.io.*;
class test
{
//main method
public static void main (String[] args) throws java.io.IOException
{
String filename = "input.txt";
// Initialize the reader
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(filename));
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
//recursive call
myRecursion(reader);
} //end main
//method using recursion to read a file
static void myRecursion(BufferedReader br)
{
String s1 = "";
try {
s1 = br.readLine();
}
catch (IOException e) {
e.printStackTrace();
}
if(s1 == null)
return;
else
{
System.out.println (s1);
myRecursion(br);
return;
}
} //end method
} //end class
The input.txt является:
one
two
three