int findpow(int n1,int k, int count){ //while calling, k=1, count=0
if(k<n1)
return findpow(n1,k*2,count+1);
if(k==n1)
return count;
if(k>n1)
return --count;
}
Dies ist eine Funktion, die den größten Zweierpotenz weniger als n zurückgibt. Wenn ich es in meinem ubuntu Terminal (g ++ 4.8.4) starte, funktioniert es gut. Aber wenn ich es auf www.hackerrank.com laufen lasse, gibt es einen Fehler (Kontrolle erreicht Ende der nicht void Funktion). Das Problem ist, dass ich an vielen Wettbewerben auf dieser Website teilnehme und ich bin mehrmals auf dieses Problem gestoßen.Steuerung erreicht Ende nicht-Hohlraumfunktion (nur auf bestimmte IDEs)
Bitte sagen Sie mir, wenn Sie wissen, wie ich es beheben kann.
Es gibt [verschiedene schnellere Möglichkeiten, um die größte Potenz von 2 weniger zu bekommen als n] zu sein (http s: //graphics.stanford.edu/~seander/bithacks.html#RoundUpPowerOf2) –
Sie sollten wahrscheinlich den Unterschied zwischen einem Compiler und einer IDE lernen. Es würde Ihnen helfen, bessere Fragen zu stellen. –
Der Compiler ist nicht schlau genug zu sehen, dass die Funktion immer zurückkehrt, Sie müssen es helfen. – Jarod42