-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