<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Verständnisproblem Rekursion]]></title><description><![CDATA[<p>Hallo,<br />
ich habe eine Funktion erstellt, der einige parameter übergeben werden und<br />
daraufhin ein Ergebnis zurückliefert wird. Innerhalb dieser Funktion möchte ich ein Teilergebnis berechnen( auch wieder mit der selben Funktion ). Nur verstehe ich jetzt nicht, ob die Funktion bei dieser Rekursion abgebrochen. Denn eigentlich will ich mit diesem Teilergebnis weiterarbeiten. Und was ist dann mit<br />
den lokalen Variablen, werden die überschrieben/gelöscht?</p>
<p>Bsp.</p>
<p>void berechnen( int x, int y )<br />
{<br />
x += 1;<br />
y -= 2;</p>
<p>/*<br />
...<br />
/*</p>
<p>int c = berechnen( x, y );</p>
<p>/*<br />
...<br />
*/</p>
<p>}</p>
<p>Ich hoffe ihr könnt mir etwas Klarheit verschaffen.</p>
<p>Vielen Dank im Voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/316628/verständnisproblem-rekursion</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Jul 2026 22:29:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/316628.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 10 May 2013 21:19:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verständnisproblem Rekursion on Fri, 10 May 2013 21:19:28 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe eine Funktion erstellt, der einige parameter übergeben werden und<br />
daraufhin ein Ergebnis zurückliefert wird. Innerhalb dieser Funktion möchte ich ein Teilergebnis berechnen( auch wieder mit der selben Funktion ). Nur verstehe ich jetzt nicht, ob die Funktion bei dieser Rekursion abgebrochen. Denn eigentlich will ich mit diesem Teilergebnis weiterarbeiten. Und was ist dann mit<br />
den lokalen Variablen, werden die überschrieben/gelöscht?</p>
<p>Bsp.</p>
<p>void berechnen( int x, int y )<br />
{<br />
x += 1;<br />
y -= 2;</p>
<p>/*<br />
...<br />
/*</p>
<p>int c = berechnen( x, y );</p>
<p>/*<br />
...<br />
*/</p>
<p>}</p>
<p>Ich hoffe ihr könnt mir etwas Klarheit verschaffen.</p>
<p>Vielen Dank im Voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2322539</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2322539</guid><dc:creator><![CDATA[gero++ 0]]></dc:creator><pubDate>Fri, 10 May 2013 21:19:28 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisproblem Rekursion on Fri, 10 May 2013 21:26:18 GMT]]></title><description><![CDATA[<p>Jeder Funktionsaufruf hat seine eigenen lokalen Variablen (außer du machst die Variablen mit Absicht static).</p>
<p>Jedoch wird deine Rekursion niemals abbrechen, sofern vor dem <code>int c = berechnen( x, y );</code> nicht irgendwo ein if kommt, welches der Funktion irgendwie einen andersartigen Abbruch ermöglicht. Denn dieses berechne wird ansonsten wieder auf <code>int c = berechnen( x, y );</code> stoßen, welches wieder auf <code>int c = berechnen( x, y );</code> wird, welches wieder auf <code>int c = berechnen( x, y );</code> stoßen wird…</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2322540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2322540</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 10 May 2013 21:26:18 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisproblem Rekursion on Fri, 10 May 2013 21:30:46 GMT]]></title><description><![CDATA[<blockquote>
<p>Nur verstehe ich jetzt nicht, ob die Funktion bei dieser Rekursion abgebrochen. Denn eigentlich will ich mit diesem Teilergebnis weiterarbeiten.</p>
</blockquote>
<p>Du musst auf jeden Fall eine Abbruch-Bedingung geben - das ist der Trick bei rekursiven Funktionen.</p>
<p>Die Faustregeln sind:</p>
<ul>
<li>Es muss eine Eigenschaft bzw. einen Wert der Parameter geben, bei dem die Funktion sich nicht weiter selbst aufruft - die Rekursion endet dort also.</li>
<li>Diese Werte müssen irgendwann bei jedem rekursiven Aufruf als Parameter bzw. Argumente auftreten, und das natürlich auch nach einer möglichst kleinen Rekursionstiefe - denn jeder Funktionsaufruf belastet den Stack und kann dann früher oder später zu einem Stack-Overflow führen.</li>
</ul>
<blockquote>
<p>Und was ist dann mit<br />
den lokalen Variablen, werden die überschrieben/gelöscht?</p>
</blockquote>
<p>Mit denen passiert gar nichts. Die lokalen Variablen bleiben wo sie sind (im entsprechenden Stackframe).</p>
<p>Edit: Zu spät. Mist. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2322543</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2322543</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Fri, 10 May 2013 21:30:46 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisproblem Rekursion on Fri, 10 May 2013 21:45:08 GMT]]></title><description><![CDATA[<p>Ok danke für die schnelle und ausführliche Antwort <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> Jetzt muss ich nur noch rausfinden warum sich das programm grad immer an dieser stelle aufhängt( Funktionsaufruf ).</p>
<p>EDIT: Funktioniert jetzt :D, hatte bei einer schleife die größe des arrays überschritten</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2322545</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2322545</guid><dc:creator><![CDATA[gero++ 0]]></dc:creator><pubDate>Fri, 10 May 2013 21:45:08 GMT</pubDate></item></channel></rss>