Um dein Beschriebenes verhalten zu erreichen musst du folgende Zeile umschreiben:
PHP-Code:
return test($integer+ $integer-2);
EDIT
achso sorry, du wolltest nicht wissen wie du es erreichen kannst sondern warum er nicht addiert, das muss ich mir erstmal überlegen wie ich es anschaulich erkläre
EDIT 2
Also dann versuche ich es mal. Der Grund ist das er erst in die Funktion reingeht bevor er addiert. Du musst dir vorstellen das alle rekursiven aufrufe erstamal ausgeführt werden und wenn der letzte erreicht wird , wird in deinem Fall Addiert, ich versuche es mal mit einem unkonventionelen Baum zu verdeutlichen:
PHP-Code:
<aufruf>
<param>20</param> // 20
<return>
<aufruf>
<param>20-2</param> // 18
<aufruf>
<param>18-2</param> // 16
..... // bis return 0
<aufruf>
<param>2-2</param>
</aufruf>
</aufruf>
</aufruf>
</return> // 20+18+16+.....
</aufruf>
Ok vll. ist das zu abstrakt .. und ich bin mir gerade auch nicht ganz sicher ob die abbildung zu 100% richtig ist aber vll. versteht man es? Die Funktion bläht sich quasi auf. Deswegen verbrauchen rekursive Funktionen oft viel speicher.
um es noch mehr zu verdeutlichen lass dir einfach echo test(20) ausgeben. Dann bekommst du nämlich das Ergebnis der Addition.