Generell ist Iteration performanter als Rekursion. Da gibt es allerdings 'nen Trade-off in einigen Fällen zwischen Performance und Programmierfreundlichkeit.
Bei "linearen" Sachverhalten, wie beispielsweise Fakultät, sollte man stets Iteration benutzen. Bei Baumstrukturen bietet sich Rekursion an.
In einigen Fällen mag sogar Rekursion performanter sein als Iteration, aber generall ist es umgekehrt.
So Sachen, wie z.B. zahl^zahl solltest Du nicht machen, sofern Du nicht Assembler programmierst, denn sowas macht den Code unleserlich. Abgehesen davon führt der Compiler solche Optimierungen ganz von alleine durch.
Divisionen und Modulo-Operationen (bei 2er-Potenzen) kannst Du allerdings selbst durch sowas wie zahl & 1 (zahl % 2) oder zahl >> 5 (zahl / 32) ersetzen. Du kannst jedoch den Test auf 0 wie in Deinem Beispiel weglassen, weil das wäre wieder ein Schritt nach hinten.
@Spik
|
C-/C++-Quelltext
|
1
|
zahl ^= zahl;
|
ergibt in jedem Fall 0, unabhängig davon, was zahl zuvor für 'nen Wert hatte.