【发布时间】:2013-11-22 22:53:04
【问题描述】:
我有一个代表建筑物的文本文件。建筑有楼层,楼层有房间。
一楼是0楼。
文本文件的结构如下:
Description
Image
North
East
South
West
Up
Down
North、East、South、West、Up 和 Down 是整数,表示该方向通向的房间。整数-1用于表示该方向没有出口。
根据建筑物的房间数量重复此操作。
所以对于四个房间,文本文件的内容可能是:
this is room 0
somefilepath
1
-1
-1
-1
2
-1
this is room 1
somefilepath
-1
-1
-1
0
-1
-1
this is room 2
somefilepath
-1
-1
-1
-1
3
0
this is room 3
somefilepath
-1
-1
-1
-1
-1
2
我正在尝试编写一个递归函数,它允许我根据 up 值计算建筑物的楼层数。例如,如果我们有一个房间上升到房间 1,房间 1 上升到房间 2,并且没有其他房间比这更高,那么我们知道有 3 层。
我知道如何使用 BufferedReader 或 Scanner 对象来读取文本文件,但我关心的是递归。
我想提前说声谢谢,这里的社区很棒。
我计算楼层数的方法(不完整,可能有误):
public int calculateFloors(int previousUp, int currentRoom) {
Scanner scanner;
int total = 0;
try {
scanner = new Scanner(currentMap);
while (scanner.hasNextLine()) {
scanner.nextLine();
scanner.nextLine();
scanner.nextLine();
scanner.nextLine();
scanner.nextLine();
scanner.nextLine();
int up = Integer.parseInt(scanner.nextLine());
scanner.nextLine();
if (up > 0) {
// do something
if (currentRoom == previousUp) {
// do something
}
}
currentRoom++;
}
} catch (Exception e) {
e.printStackTrace();
}
return total;
}
【问题讨论】:
-
标准问题:您尝试过什么?你有什么问题?您是否有一些代码可以显示您的想法以及它在什么方面不起作用?
-
@vanza 到目前为止,我已经发布了我的方法,如您所见,我不确定如何实现递归。
-
递归的定义是根据自身定义的方法。在编程方面,它是一种调用自身的方法。 dummies.com/how-to/content/…
-
@James 感谢您的链接,我知道我需要在自身内部调用该函数,这就是为什么我有这两个参数来跟踪值的原因。我只是不确定如何将其应用于这种情况。
-
我个人认为不需要递归方法...