Recursion 递归方法-并非所有代码路径都返回值!
它说并不是所有的代码路径都返回一个值Recursion 递归方法-并非所有代码路径都返回值!,recursion,Recursion,它说并不是所有的代码路径都返回一个值 private string Fisrt(string nonTerminal) { for (int j = 0; j < 6; j++) { if (Tokens[j, 0] == nonTerminal) { if (char.IsLower((char)Tokens[j, 3][0]))
private string Fisrt(string nonTerminal)
{
for (int j = 0; j < 6; j++)
{
if (Tokens[j, 0] == nonTerminal)
{
if (char.IsLower((char)Tokens[j, 3][0]))
return (Tokens[j, 3]);
else
Fisrt(Tokens[j, 3]);
}
}
}
private string first(字符串非终结符)
{
对于(int j=0;j<6;j++)
{
if(令牌[j,0]==非终结符)
{
if(char.IsLower((char)令牌[j,3][0]))
返回(代币[j,3]);
其他的
第一部分(代币[j,3]);
}
}
}
例如,如果值为0到5的令牌[j,0]
中没有一个是非终端的怎么办
或者,如果标记[j,3][0]
从来都不是小写的?私有字符串first(字符串非终结符)
private string Fisrt(string nonTerminal)
{
for (int j = 0; j < 6; j++)
{
if (Tokens[j, 0] == nonTerminal)
{
if (char.IsLower((char)Tokens[j, 3][0]))
return (Tokens[j, 3]);
else
return Fisrt(Tokens[j, 3]);
/* ^ add a return here */
}
}
return SOMETHING;
/* ^ You also need to add some return value here */
}
{
对于(int j=0;j<6;j++)
{
if(令牌[j,0]==非终结符)
{
if(char.IsLower((char)令牌[j,3][0]))
返回(代币[j,3]);
其他的
第一次返回(代币[j,3]);
/*^在此处添加退货*/
}
}
归还某物;
/*^您还需要在此处添加一些返回值*/
}
如果for
循环正常退出,您还需要决定返回哪个字符串值(或null)。您应该返回递归步骤
`return First(Tokens[j, 3])`
并处理
外部之外的情况,如果
在函数中声明,则返回字符串值,否则不返回字符串值。将return语句添加到else..如果Tokens[j,0]==nonTerminal
永远不为真怎么办?