<?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[Rekursion - Verständnisproblem]]></title><description><![CDATA[<p>Hallo Programmier Freunde,</p>
<p>ich bin gerade beim Thema Rekursion und bin echt am verzweifeln. Ich verstehe einfach nicht wie die Potenzierung abläuft. Besser gesagt verstehe ich alles außer einen kleinen Teil, der eigentlich am wichtigsten ist.</p>
<p>Hier erstmal ein Beispiel:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

int Answer(unsigned short number, unsigned short power);

int main()
{
int number, power;
int answer;
cout &lt;&lt; &quot;Geben Sie eine Zahl ein: &quot;;
cin &gt;&gt; number;
cout &lt;&lt; &quot;Zu welcher Potenz? &quot;;
cin &gt;&gt; power;
answer = Answer(number,power);
cout &lt;&lt; number &lt;&lt; &quot; hoch &quot; &lt;&lt; power &lt;&lt; &quot; ist gleich &quot; &lt;&lt;
answer &lt;&lt; endl;

return 0;

}

int Answer(unsigned short number, unsigned short power)
{
if(power == 1)
return number;
else
return (number * Answer(number,power-1));
}
</code></pre>
<p>So jetzt ist die Frage wie am ende in Zeile 28 das number aus (number * Answer(number,power-1) multipliziert wird. Gehen wir davon aus die erste Zahl ist 4 und soll ebenfalls mit 4 potenziert werden. Wie bekommt aber das Answer(number,power-1) den Wert 4? Wie es wieder zurückgeworfen wird bis die Potenz auf 1 geht verstehe ich soweit. Aber mein Gedanke ist, dass wenn es returned wird und das Programm die Potenz 1 bringen will, wann überhaupt die 4 multipliziert wird.</p>
<p>Mir fällt es schwer mein Problem zu beschreiben, ich hoffe ihr habt es verstanden.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/266422/rekursion-verständnisproblem</link><generator>RSS for Node</generator><lastBuildDate>Thu, 03 Sep 2026 07:14:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/266422.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 08 May 2010 18:42:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Rekursion - Verständnisproblem on Sat, 08 May 2010 18:42:02 GMT]]></title><description><![CDATA[<p>Hallo Programmier Freunde,</p>
<p>ich bin gerade beim Thema Rekursion und bin echt am verzweifeln. Ich verstehe einfach nicht wie die Potenzierung abläuft. Besser gesagt verstehe ich alles außer einen kleinen Teil, der eigentlich am wichtigsten ist.</p>
<p>Hier erstmal ein Beispiel:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

int Answer(unsigned short number, unsigned short power);

int main()
{
int number, power;
int answer;
cout &lt;&lt; &quot;Geben Sie eine Zahl ein: &quot;;
cin &gt;&gt; number;
cout &lt;&lt; &quot;Zu welcher Potenz? &quot;;
cin &gt;&gt; power;
answer = Answer(number,power);
cout &lt;&lt; number &lt;&lt; &quot; hoch &quot; &lt;&lt; power &lt;&lt; &quot; ist gleich &quot; &lt;&lt;
answer &lt;&lt; endl;

return 0;

}

int Answer(unsigned short number, unsigned short power)
{
if(power == 1)
return number;
else
return (number * Answer(number,power-1));
}
</code></pre>
<p>So jetzt ist die Frage wie am ende in Zeile 28 das number aus (number * Answer(number,power-1) multipliziert wird. Gehen wir davon aus die erste Zahl ist 4 und soll ebenfalls mit 4 potenziert werden. Wie bekommt aber das Answer(number,power-1) den Wert 4? Wie es wieder zurückgeworfen wird bis die Potenz auf 1 geht verstehe ich soweit. Aber mein Gedanke ist, dass wenn es returned wird und das Programm die Potenz 1 bringen will, wann überhaupt die 4 multipliziert wird.</p>
<p>Mir fällt es schwer mein Problem zu beschreiben, ich hoffe ihr habt es verstanden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1894361</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1894361</guid><dc:creator><![CDATA[KompiPauer]]></dc:creator><pubDate>Sat, 08 May 2010 18:42:02 GMT</pubDate></item><item><title><![CDATA[Reply to Rekursion - Verständnisproblem on Sat, 08 May 2010 18:53:29 GMT]]></title><description><![CDATA[<p>Das kommt aus Zeile 26 wenn die Rekursion genug tief ist. Mach es einfach mal von Hand für eine kleine Zahl:</p>
<pre><code>Answer (2,3)
-&gt; // power != 1 also rekursion
2*Answer(2,2)
-&gt; // power != 1 also rekursion
2*2*Answer(2,1)
-&gt; // power == 1, also wird return 2 gemacht
2*2*2
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1894366</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1894366</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sat, 08 May 2010 18:53:29 GMT</pubDate></item><item><title><![CDATA[Reply to Rekursion - Verständnisproblem on Sat, 08 May 2010 20:00:18 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Das kommt aus Zeile 26 wenn die Rekursion genug tief ist. Mach es einfach mal von Hand für eine kleine Zahl:</p>
<pre><code>Answer (2,3)
-&gt; // power != 1 also rekursion
2*Answer(2,2)
-&gt; // power != 1 also rekursion
2*2*Answer(2,1)
-&gt; // power == 1, also wird return 2 gemacht
2*2*2
</code></pre>
</blockquote>
<p>Danke erstmal für die Mühe.<br />
Ich versuchs mal selber zu erklären, soweit ich das verstanden habe.</p>
<p>So sagen wir mal 2 number und 3 power<br />
dann wird 2,3 logischerweise zu else<br />
2 * answer(2,3-1)<br />
2 power ist wieder nicht 1 also wirds wieder zu else<br />
dann bleibt die erste 2 * vom letzten und es heißt nun<br />
2 * 2 * answer(2, 2-1)<br />
dann wird if true und dies wird dann zu den (2 * 2 <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title="*)"
      alt="😉"
    /> multiplziert sodass es am ende 2 * 2 * 2 heißt. aber wenns so ist, wie kommt das programm dazu, beim letzten schritt die zahl mal zu nehmen oder die zahlen miteinander zu verknüpfen?</p>
<p>total verwirrt gerade <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1894402</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1894402</guid><dc:creator><![CDATA[KompiPauer]]></dc:creator><pubDate>Sat, 08 May 2010 20:00:18 GMT</pubDate></item><item><title><![CDATA[Reply to Rekursion - Verständnisproblem on Sat, 08 May 2010 21:02:49 GMT]]></title><description><![CDATA[<p>Die einzelnen Rechenschritte (Multiplikationen) werden jeweils beim 'return' schon ausgerechnet, nicht erst ganz am Schluß, d.h.</p>
<pre><code>Answer (2,3)
-&gt; // power != 1 also rekursion
2*Answer(2,2)
-&gt; // power != 1 also rekursion
2*(2*Answer(2,1))
-&gt; // power == 1, also wird return 2 gemacht
2*(2*2)
-&gt;
2*4
-&gt;
8
</code></pre>
<p>Je Rekursionsebene wird also ein Teilergebnis berechnet (das in den Klammern).<br />
Vllt. ist das so jetzt besser für dich verständlich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1894436</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1894436</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Sat, 08 May 2010 21:02:49 GMT</pubDate></item><item><title><![CDATA[Reply to Rekursion - Verständnisproblem on Sat, 08 May 2010 22:15:00 GMT]]></title><description><![CDATA[<p>Der Algorithmus lautet nach dem Prinzip von Divide and Conquer übrigens so:</p>
<pre><code class="language-cpp">int sq(int x)
{ return x * x; }

int pow(int a, int b)
{
 if (b == 0)
 { return 1; }
 else if (b % 2 == 0)
 {
  return sq(pow(a, b/2));
 }
 return a * pow(a, b-1);
}
</code></pre>
<p>Ungetestet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1894451</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1894451</guid><dc:creator><![CDATA[ghjghj]]></dc:creator><pubDate>Sat, 08 May 2010 22:15:00 GMT</pubDate></item><item><title><![CDATA[Reply to Rekursion - Verständnisproblem on Sat, 08 May 2010 22:15:19 GMT]]></title><description><![CDATA[<p>ich glaube es verstanden zu haben.<br />
es wird also die zahl ausgerechnet und in einen speicher &quot;gelagert&quot;<br />
dies geht dann immer weiter und es wird nacheinander mit dem gespeicherten zusammengeführt bis halt if erfüllt wird.<br />
so würde es dann ungefähr dann aussehen:<br />
(number * (number * (number* (Answer(number,power-1)))));<br />
bis power halt auf 1 ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1894452</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1894452</guid><dc:creator><![CDATA[KompiPauer]]></dc:creator><pubDate>Sat, 08 May 2010 22:15:19 GMT</pubDate></item><item><title><![CDATA[Reply to Rekursion - Verständnisproblem on Sun, 09 May 2010 13:56:22 GMT]]></title><description><![CDATA[<p>Th69 schrieb:</p>
<blockquote>
<p>Die einzelnen Rechenschritte (Multiplikationen) werden jeweils beim 'return' schon ausgerechnet, nicht erst ganz am Schluß, d.h.</p>
</blockquote>
<p>Das stimmt. Ich dachte, dass ich es halt eher als Teleskopsumme aufschreibe, damit er besser sieht, was da in etwa passiert.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/24702">@KompiPauer</a>:<br />
Genau so sieht das aus. Wobei der Speicher üblicherweise der Stack für die lokalen Variablen einer Funktion ist. Wenn du mit einem Debugger das mal durchgehst und die unterste Funktion gehst siehst du schön, wie das ganze zurückgesteppt wird und das Ergebnis am Ende entsteht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1894654</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1894654</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 09 May 2010 13:56:22 GMT</pubDate></item><item><title><![CDATA[Reply to Rekursion - Verständnisproblem on Sun, 09 May 2010 16:15:12 GMT]]></title><description><![CDATA[<p>Sehr gut, jetzt kann ich besser schlafen <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/1894742</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1894742</guid><dc:creator><![CDATA[KompiPauer]]></dc:creator><pubDate>Sun, 09 May 2010 16:15:12 GMT</pubDate></item></channel></rss>