记录一个错误
在写递归下降子程序的时候写了下面两个函数,一直认为是一样的,最后才发现不一样。
第一种只有在str[idx]=’+‘或者str[idx]=’-'的时候,才会执行T()和G()
void G(){
if(str[idx]=='+')
{
idx++;
T();
G();
}else if(str[idx]=='-')
{
idx++;
T();
G();
}
}
下面这种,无论如何都会执行T和G,会死循环
void G(){
A();
T();
G();
}
void A(){
if(str[idx]=='+')idx++;
else if(str[idx]=='-')idx++;
}