public boolean q0() {
if(word[0] != 'a') {
System.err.println("Word not accepted!");
System.exit(0);
}
if(word.length-1 > cont && word[cont] == 'a') {
cont++;
return q0();
}
else if(word[cont] == 'b') {
q1();
}
return false;
}
我的代码工作正常。但我必须确定这是否实际上是一个递归
答案 0 :(得分:2)
技术上是递归的,是的,因为"Lamba login name is lambda, and avatar url is https://avatars.githubusercontent.com/u/37398?v=3"
自称。
q0()
,它在调用之间发生变化。将cont
作为在不同调用之间传递的参数而不是可变外部状态会更好。
此:
cont
会变成这样:
cont++;
return q0();
此外,这个分支很不寻常:
return q0(cont + 1);
那应该是else if(word[cont] == 'b'){
q1();
}
吗?我的猜测是你打算转发return q1();
的回报值。或q1
实际上有副作用吗?如果是后者,那就是巨大的代码味道。