递归方法 - 并非所有的代码路径都返回一个值!
问题描述:
它说,不是所有的代码路径返回一个值递归方法 - 并非所有的代码路径都返回一个值!
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 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 */
}
您还需要决定什么字符串值(或空)在你的for
循环正常退出的情况下返回。
答
例如,如果没有Tokens[j, 0]
,具有j
值0到5,nonTerminal
?如果Tokens[j, 3][0]
从不小写?
答
您应该返回递归步骤
`return First(Tokens[j, 3])`
和处理外for
和if
外的情况。
它在函数中声明,返回一个字符串值,但不返回字符串值。将else语句添加到else .. – Chaitanya 2010-06-26 16:19:55