<?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[Fibonacci Reihe]]></title><description><![CDATA[<p>Auszug aus C++ in 21 Tagen:</p>
<pre><code class="language-cpp">int fib(int n);

int main(){

	int n,answer;

	cout&lt;&lt;&quot;Zu findende Zahl eingeben: &quot;;
	cin &gt;&gt;n;

	cout &lt;&lt; &quot;\n\n&quot;;

	answer=fib(n);

	cout&lt;&lt; &quot;Die &quot;&lt;&lt; n &lt;&lt; &quot;. Fibonacci Zahl&quot;&lt;&lt; &quot; lautet &quot; &lt;&lt;answer;

	cout &lt;&lt; endl;

	return 0;
}

int fib(int n){

	cout &lt;&lt;&quot;Verarbeitung von fib(&quot;&lt;&lt;n&lt;&lt;&quot;)...&quot;;

	if(n&lt;3){
		cout &lt;&lt;&quot;Rueckgabewert 1!\n&quot;;
		return 1;
	}
	else {
		cout&lt;&lt;&quot;Aufruf von fib(&quot;&lt;&lt;n-2&lt;&lt;&quot;) und fib(&quot;&lt;&lt;n-1&lt;&lt;&quot;).\n&quot;;

		return fib(n-2)+fib(n-1); // Fib-Algorithmus 
	}

}
</code></pre>
<p>Frage zum Allgorithmus:</p>
<p>Ich möchte gerne wissen warum bei der Ausgabe d. Codes<br />
unter Verarbeitung von fib(&lt;&lt;n&lt;&lt;) ständig die Zahlen die kleiner der eingegebenen Zahl sind wiederholt werden (klar die Rekursion).<br />
Laut Wissens, und C++ Buch steht drin, dass nur die 1 zweimal vorkommt in der Folge.<br />
Aber nicht die 4,3 oder 2.</p>
<p>Würde mich freuen wenn einer die Frage beantworten könnte.</p>
<p>Hab als Beispiel die 3 genommen, die wiederholt wird.</p>
<p>Die Ausgabe:</p>
<p>Zu findende Zahl eingeben: 6</p>
<p>Verarbeitung von fib(6)...Aufruf von fib(4) und fib(5)<br />
Verarbeitung von fib(4)...Aufruf von fib(2) und fib(3)<br />
Verarbeitung von fib(2)...Rueckgabewert 1!<br />
Verarbeitung von fib(3)...Aufruf von fib(1) und fib(2)<br />
Verarbeitung von fib(1)...Rueckgabewert 1!<br />
Verarbeitung von fib(2)...Rueckgabewert 1!<br />
Verarbeitung von fib(5)...Aufruf von fib(3) und fib(4)<br />
Verarbeitung von fib(3)...Aufruf von fib(1) und fib(2)<br />
Verarbeitung von fib(1)...Rueckgabewert 1!<br />
Verarbeitung von fib(2)...Rueckgabewert 1!<br />
Verarbeitung von fib(4)...Aufruf von fib(2) und fib(3)<br />
Verarbeitung von fib(2)...Rueckgabewert 1!<br />
Verarbeitung von fib(3)...Aufruf von fib(1) und fib(2)<br />
Verarbeitung von fib(1)...Rueckgabewert 1!<br />
Verarbeitung von fib(2)...Rueckgabewert 1!<br />
Die 6. Fibonacci Zahl lautet 8</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/182781/fibonacci-reihe</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 12:36:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/182781.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 29 May 2007 09:48:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fibonacci Reihe on Tue, 29 May 2007 09:48:28 GMT]]></title><description><![CDATA[<p>Auszug aus C++ in 21 Tagen:</p>
<pre><code class="language-cpp">int fib(int n);

int main(){

	int n,answer;

	cout&lt;&lt;&quot;Zu findende Zahl eingeben: &quot;;
	cin &gt;&gt;n;

	cout &lt;&lt; &quot;\n\n&quot;;

	answer=fib(n);

	cout&lt;&lt; &quot;Die &quot;&lt;&lt; n &lt;&lt; &quot;. Fibonacci Zahl&quot;&lt;&lt; &quot; lautet &quot; &lt;&lt;answer;

	cout &lt;&lt; endl;

	return 0;
}

int fib(int n){

	cout &lt;&lt;&quot;Verarbeitung von fib(&quot;&lt;&lt;n&lt;&lt;&quot;)...&quot;;

	if(n&lt;3){
		cout &lt;&lt;&quot;Rueckgabewert 1!\n&quot;;
		return 1;
	}
	else {
		cout&lt;&lt;&quot;Aufruf von fib(&quot;&lt;&lt;n-2&lt;&lt;&quot;) und fib(&quot;&lt;&lt;n-1&lt;&lt;&quot;).\n&quot;;

		return fib(n-2)+fib(n-1); // Fib-Algorithmus 
	}

}
</code></pre>
<p>Frage zum Allgorithmus:</p>
<p>Ich möchte gerne wissen warum bei der Ausgabe d. Codes<br />
unter Verarbeitung von fib(&lt;&lt;n&lt;&lt;) ständig die Zahlen die kleiner der eingegebenen Zahl sind wiederholt werden (klar die Rekursion).<br />
Laut Wissens, und C++ Buch steht drin, dass nur die 1 zweimal vorkommt in der Folge.<br />
Aber nicht die 4,3 oder 2.</p>
<p>Würde mich freuen wenn einer die Frage beantworten könnte.</p>
<p>Hab als Beispiel die 3 genommen, die wiederholt wird.</p>
<p>Die Ausgabe:</p>
<p>Zu findende Zahl eingeben: 6</p>
<p>Verarbeitung von fib(6)...Aufruf von fib(4) und fib(5)<br />
Verarbeitung von fib(4)...Aufruf von fib(2) und fib(3)<br />
Verarbeitung von fib(2)...Rueckgabewert 1!<br />
Verarbeitung von fib(3)...Aufruf von fib(1) und fib(2)<br />
Verarbeitung von fib(1)...Rueckgabewert 1!<br />
Verarbeitung von fib(2)...Rueckgabewert 1!<br />
Verarbeitung von fib(5)...Aufruf von fib(3) und fib(4)<br />
Verarbeitung von fib(3)...Aufruf von fib(1) und fib(2)<br />
Verarbeitung von fib(1)...Rueckgabewert 1!<br />
Verarbeitung von fib(2)...Rueckgabewert 1!<br />
Verarbeitung von fib(4)...Aufruf von fib(2) und fib(3)<br />
Verarbeitung von fib(2)...Rueckgabewert 1!<br />
Verarbeitung von fib(3)...Aufruf von fib(1) und fib(2)<br />
Verarbeitung von fib(1)...Rueckgabewert 1!<br />
Verarbeitung von fib(2)...Rueckgabewert 1!<br />
Die 6. Fibonacci Zahl lautet 8</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294306</guid><dc:creator><![CDATA[Nichtwissender]]></dc:creator><pubDate>Tue, 29 May 2007 09:48:28 GMT</pubDate></item><item><title><![CDATA[Reply to Fibonacci Reihe on Tue, 29 May 2007 09:52:26 GMT]]></title><description><![CDATA[<p>Du hast dort zwei rekursive Aufrufe in der Funktion drin und der Wert fib(3) wird dadurch mehrfach in der Berechnung benötigt - einmal als erster Summand von fib(4) und als zweiter Summand von fib(5). Und jedes Mal, wenn dieser Wert benötigt wird, wird er neu berechnet (das ist der Nachteil des rekursiven Ansatze).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294310</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 29 May 2007 09:52:26 GMT</pubDate></item><item><title><![CDATA[Reply to Fibonacci Reihe on Tue, 29 May 2007 11:46:22 GMT]]></title><description><![CDATA[<p>Hab noch mal eine Frage,</p>
<p>warum ensteht ne Endlosschleife wenn ich z.B. 968 eingebe?</p>
<p>Die Fib.Reihe ist doch eine endlose Folge , also muss der Wert doch irgendwann erreicht sein für die Eingabe 968.</p>
<p>Oder liegt es am Datentyp?<br />
Kann ja sein dass sowas wie long long int oder int64... benötigt wird.</p>
<p>Hab dazu noch ne Frage:<br />
Gibt es irgendwo die stdint.h zum Download/Kopieren?<br />
Hab nix gefunden bisher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294388</guid><dc:creator><![CDATA[Nichtwissender]]></dc:creator><pubDate>Tue, 29 May 2007 11:46:22 GMT</pubDate></item><item><title><![CDATA[Reply to Fibonacci Reihe on Tue, 29 May 2007 11:50:02 GMT]]></title><description><![CDATA[<p>Nichtwissender schrieb:</p>
<blockquote>
<p>Hab noch mal eine Frage,</p>
<p>warum ensteht ne Endlosschleife wenn ich z.B. 968 eingebe?</p>
</blockquote>
<p>Eigentlich sollte keine Endlosrekursion entstehen (Endlosschleife sowieso nicht). Aber bei 968 kann es eine Weile dauern, bis das Verfahren durch ist - da ist die iterative Lösung vermutlich schneller.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294390</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294390</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 29 May 2007 11:50:02 GMT</pubDate></item><item><title><![CDATA[Reply to Fibonacci Reihe on Tue, 29 May 2007 11:52:39 GMT]]></title><description><![CDATA[<p>Danke für die schnelle Antwort.</p>
<p>P.S.:<br />
Hab trotzdem ne Frage nochmal wo ich die stdint.h herbekomme.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294391</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294391</guid><dc:creator><![CDATA[Nichtwissender]]></dc:creator><pubDate>Tue, 29 May 2007 11:52:39 GMT</pubDate></item><item><title><![CDATA[Reply to Fibonacci Reihe on Tue, 29 May 2007 11:56:38 GMT]]></title><description><![CDATA[<p>Frag mal google <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="😉"
    /></p>
<p>Aber wozu brauchst du sie überhaupt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294396</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294396</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 29 May 2007 11:56:38 GMT</pubDate></item><item><title><![CDATA[Reply to Fibonacci Reihe on Thu, 13 Sep 2007 15:19:10 GMT]]></title><description><![CDATA[<p>Lese grade noch einmal die Beiträge zu Rekursionen.</p>
<p>Wie lässt man denn die Rekursionen zählen?</p>
<p>Hier bei der Eingabe 6, 15 Rekursionen?</p>
<p>Könnte man nicht eine Countfunktion anlegen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364741</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364741</guid><dc:creator><![CDATA[Nichtwissender]]></dc:creator><pubDate>Thu, 13 Sep 2007 15:19:10 GMT</pubDate></item><item><title><![CDATA[Reply to Fibonacci Reihe on Thu, 13 Sep 2007 15:25:00 GMT]]></title><description><![CDATA[<p>Klar, Du könntest zum Beispiel am Anfang der Funktion immer einen globalen Counter hochzählen (oder eine Zählvariable per Referenz übergeben).</p>
<p>Aber in diesem Fall ist es besonders einfach: Du machst ungefähr genauso viele Funktionsaufrufe wie das Ergebnis Deiner Berechnung groß ist. Deswegen dauert das auch so lange. Die Fibonacci-Zahlen wachsen exponentiell. Daher hast Du bei der 980. Zahl schon jede Menge Funktionsaufrufe.</p>
<p>Ich frage mich sowieso wer auf die Idee gekommen ist anhand von sowas Rekursion in der Programmierung einzuführen. Die iterative Variante ist um Längen besser. Leider scheint sich das aber noch nicht rumgesprochen zu haben. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364744</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364744</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Thu, 13 Sep 2007 15:25:00 GMT</pubDate></item><item><title><![CDATA[Reply to Fibonacci Reihe on Thu, 13 Sep 2007 19:20:28 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">//Functors sind universell verwendbare Funktionsobjekte.
//Sie erweitern das aus C bekannte Konzept der Funktionszeiger
//Ein Functor ist ein Objekt, welches operator() definiert.

class FibonacciGen {//fibonacci Generator Die ersten beiden Glieder der Folge sind 1, jedes danach die Summe seiner beiden direkten Vorgänger.

public:
    FibonacciGen() : x(1), y(0), tmp(0) {}
    int operator()() {
        tmp = x + y;
        x = y;
        y = tmp;
        return tmp;
    }
private:
    int x, y, tmp;
};
//Es handelt sich also um eine ganz normale Klassendefinition, lediglich das Vorhandensein von operator()
//macht ein Objekt vom Typ FibonacciGen automatisch zum Functor.

#include &lt;iostream&gt;
#include &lt;algorithm&gt;
#include &lt;vector&gt;
using namespace std;

int main()
{
    vector &lt;int&gt; a(10);       //Die erste 10 Fibonacci-Zahlen
    vector &lt;int&gt;::iterator Iter1;
    generate( a.begin(), a.end(), FibonacciGen());//speichern

    for (Iter1 = a.begin(); Iter1 != a.end(); ++Iter1)
         cout &lt;&lt; *Iter1 &lt;&lt; endl;                  //ausgeben
	return 0;
}
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364886</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364886</guid><dc:creator><![CDATA[Functor]]></dc:creator><pubDate>Thu, 13 Sep 2007 19:20:28 GMT</pubDate></item><item><title><![CDATA[Reply to Fibonacci Reihe on Fri, 14 Sep 2007 12:12:39 GMT]]></title><description><![CDATA[<p>Nichtwissender schrieb:</p>
<blockquote>
<p>Auszug aus C++ in 21 Tagen:</p>
<pre><code class="language-cpp">int fib(int n){

	cout &lt;&lt;&quot;Verarbeitung von fib(&quot;&lt;&lt;n&lt;&lt;&quot;)...&quot;;

	if(n&lt;3){
		cout &lt;&lt;&quot;Rueckgabewert 1!\n&quot;;
		return 1;
	}
	else {
		cout&lt;&lt;&quot;Aufruf von fib(&quot;&lt;&lt;n-2&lt;&lt;&quot;) und fib(&quot;&lt;&lt;n-1&lt;&lt;&quot;).\n&quot;;

		return fib(n-2)+fib(n-1); // Fib-Algorithmus 
	}

}
</code></pre>
</blockquote>
<p>Bist du sicher, dass das SO drinstand?<br />
Denn die ersten Fibonaccizahlen sind 0, 1, 1 und nicht 1,1,1 wie hier dargestellt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> ... müsste doch eher so heißen, oder:</p>
<pre><code class="language-cpp">if(n==0){
  cout &lt;&lt;&quot;Rueckgabewert 0!\n&quot;;
  return 0;
}
else if( n==1 || n==2 ) {
  cout &lt;&lt; &quot;Rückgabewert1!\n&quot;;
  return 1;
}
else{
		cout&lt;&lt;&quot;Aufruf von fib(&quot;&lt;&lt;n-2&lt;&lt;&quot;) und fib(&quot;&lt;&lt;n-1&lt;&lt;&quot;).\n&quot;;

		return fib(n-2)+fib(n-1); // Fib-Algorithmus 
	}
</code></pre>
<p>(außerdem ist die Fibonaccizahl2 bereits durch die Fibonaccizahl0 und die Fibonaccizahl1 berechenbar <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="😉"
    /> )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1365218</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1365218</guid><dc:creator><![CDATA[Checker*amp*Murckser]]></dc:creator><pubDate>Fri, 14 Sep 2007 12:12:39 GMT</pubDate></item><item><title><![CDATA[Reply to Fibonacci Reihe on Fri, 14 Sep 2007 12:26:09 GMT]]></title><description><![CDATA[<p>Checker&amp;Murckser schrieb:</p>
<blockquote>
<p>Bist du sicher, dass das SO drinstand?<br />
Denn die ersten Fibonaccizahlen sind 0, 1, 1 und nicht 1,1,1 wie hier dargestellt</p>
</blockquote>
<p>Das ist Definitionssache. Da Folgen i.A. einen Index aus den natürlichen Zahlen haben und in Deutschland diese meistens ohne 0 sind, ist das an sich nicht soo falsch (abgesehen davon, dass der Benutzer mit Fehlern beworfen gehört, falls n == 1 ist ;)).</p>
<p>Wo da grad ein alternativer Vorschlag kommt, wenn man die Suche bemüht findet man sicher auch noch die Fibonacci-Iteratoren von Konrad Rudolph und mir (kA wer da noch so dran beteiligt war).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1365232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1365232</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Fri, 14 Sep 2007 12:26:09 GMT</pubDate></item></channel></rss>