Dies ist meine rekursive Funktion:Wie kann diese rekursive Funktion true zurückgeben?
public bool controllaSelezioneSottopagina(KPage k_oPaginaAttuale, KPage k_oPaginaSuperiore)
{
foreach (KPage k_oSottoPagina in k_oPaginaSuperiore.SottoPagine)
{
if (k_oSottoPagina.ID == k_oPaginaAttuale.ID)
{
return true;
}
else
{
if (k_oSottoPagina.SottoPagine.Count != 0)
{
controllaSelezioneSottopagina(k_oPaginaAttuale, k_oSottoPagina);
}
}
}
return false;
}
I Aspekt, von wo ich es nennen, zu immer falsch zu bekommen (die return false
am Ende der Funktion wird das letzte Ergebnis sein, das jemals zurückgegeben werden) .
In der Tat, manchmal gibt es wahr zurück.
Wie ist es möglich? Debugging versucht ... aber ich kann den Fehler nicht herausfinden ...
Könnten Sie die Definition der 'KPage' Klasse zu veröffentlichen, und zeigen, wie Sie' controllaSelezioneSottopagina' rufen zu den falschen Rückgabewert verursachen? –
Sie müssen den rekursiven Aufruf zurückgeben. – SLaks
vielleicht .. für die erste k_oSottoPagina die 'if (k_oSottoPagina.ID == k_oPaginaAttuale.ID)' ist wahr? – nothrow