-4
这是一个有限状态机:如何使用堆栈将以下代码替换为非递归?
private int recursive(int rc, int pc, int sc) {
for (;;) {
Instruction actual = program[rc][pc];
switch (actual.type) {
case FIRST:
if (sc >= input.length || input[sc] != actual.c1) return -1;
pc++; sc++;
continue;
case SECOND:
pc = actual.n1;
continue;
case THIRD:
int result = recursive(rc, actual.n1, sc);
if (result != -1) return result;
pc = actual.n2;
continue;
case FOURTH:
result = recursive(actual.n1, 0, sc);
if (result == -1) return -1;
pc++; sc = result;
continue;
case FIFTH:
if (sc == input.length) return sc;
return -1;
}
return -1;
}
}
感谢您的帮助。
这真的不是一个“为我写代码”的网站。尝试一些事情,然后回来具体问题。 – retrodrone 2011-10-17 12:59:34
我很抱歉,但对我来说这是一个非常难的问题 – 2011-10-17 13:03:41