SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Das Zend Framework

Das Zend Framework zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 09.07.2009, 21:26:48
Salamander89 Salamander89 ist offline
Anfänger
 
Registriert seit: Mar 2009
Alter: 33
Beiträge: 26
Ablauf von Funktionen

Hallo zusammen,
ich bin gerade dabei, meine PHP - Kenntnisse zu vertiefen.
Jetzt hab ich mal ne Frage zu Rekursionen (=Funktionen, die sich in ihrem Rumpf selbst aufrufen):

Ich hab folgenden Code:
PHP-Code:
<?php
function test($integer) {
    if (
$integer <=0){
        return 
0;
    }
    else {
    echo 
"$integer ";
    return 
$integer test($integer-2);
    }
}

test(20);
?>
Im Browser erhalte ich die Ausgabe "20 18 16 14 12 10 8 6 4 2"
Allerdings, so wie ich den Ablauf der Funktion verstehe, müsste doch eine Addition stattfinden, also in etwa so "38 74 146 290 ...." (ist mir schon klar, dass das eine Endlosschleife wäre). Die Funktion müsste also immer zum vorherigen Return-Wert den Wert (Return - 2) addieren. Warum tut sie das aber nicht?
Mit Zitat antworten
  #2  
Alt 10.07.2009, 09:14:00
Benutzerbild von Indyk
Indyk Indyk ist offline
Member
 
Registriert seit: Aug 2006
Ort: Lübeck
Alter: 36
Beiträge: 900
Indyk eine Nachricht über ICQ schicken
AW: Ablauf von Funktionen

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.

Geändert von Indyk (10.07.2009 um 09:49:47 Uhr) Grund: s. edit
Mit Zitat antworten
  #3  
Alt 10.07.2009, 21:34:21
Salamander89 Salamander89 ist offline
Anfänger
 
Registriert seit: Mar 2009
Alter: 33
Beiträge: 26
AW: Ablauf von Funktionen

Ok, danke, ich denke jetzt hab ichs verstanden.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Funktionen auslagern - wie am sinnvollsten? schandelah PHP Grundlagen 4 29.07.2008 11:58:36
Selbsterstelle Funktionen PHP The Serious Sam Apache HTTP-Server 2 09.02.2008 14:04:34
Funktionen erstellen ..! ): some one Off Topic Area 21 02.05.2007 22:50:23
eigene funktionen |Coding Off Topic Area 5 25.02.2005 15:11:12
Funktionen zur Laufzeit erneut einlesen. DarkSpir PHP für Fortgeschrittene und Experten 5 06.02.2004 16:12:38


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:45:57 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2023, Jelsoft Enterprises Ltd.


© 2001-2023 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt