<?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[2 rekursive funktionen, die sich gegenseitig aufrufen]]></title><description><![CDATA[<p>Hallo!</p>
<p>ich hoffe mir kann jemand helfen!<br />
Und zwar habe ich zwei funktionen aus einer klasse, sx und sy.<br />
sy werden parameter übergeben, die sich beim nächsten aufruf um eins versetzen sollen. (also berechne_sx(x1,x2,y1,y2,sy)<br />
-&gt;berechne_sx(x1+i,x1,y1+i,y1,sy)<br />
nun ist mein problem, dass ich zwar im ersten durchgang einen wert für sy übergebe. aber dann beim rekursiven aufruf sollte der wert, der in der funktion berechne_sy berechnet wird, übergeben werden.<br />
aber der ist zu dem zeitpunkt noch nicht berechnet.</p>
<p>Hat jemand ne idee wie ich da sproblem lösen könnte?<br />
meine derzeitigen ideen sind:<br />
-beide funktionen zu einer machen ( gibt aber leider momentan noch das falsche aus)<br />
-statt sy zu übergeben, berechne_sy(..) übergeben( was bis jetzt auch noch nicht klappt, auch nciht wenn ich es vorher als double b=berechne_sy(...) und dann als b übergeb)</p>
<p>ich würd mich sehr über hilfe freuen <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="🙂"
    /></p>
<pre><code class="language-cpp">void Punkt::berechne_sigma_y( double y_2, double y_1, double x_2, double x_1, double s_yA,double s_yP, double s_xP, double s_xA)
{
	if(next-&gt;get_next()!=NULL)
    {  
		sigma_y=sqrt(a1*s_yA+a2*s_yP+a3*s_xP+a4*s_xA+sin(t)*ss+w*standABr+w*standABr)
        next-&gt;next-&gt;berechne_sigma_y(y_1,get_y(),x_1,get_x(),get_sigmay(),s_yA,s_xA,get_sigmax();
    }
}

void Punkt::berechne_sigma_x(double y_2, double y_1, double x_2, double x_1, double s_yA,double s_yP, double s_xP, double s_xA)
{
    if(next-&gt;get_next()!=NULL)
    {
		sigma_x=sqrt(pow(get_b1(),2.)*pow(s_yA,2.)+pow(get_b2(),2.)*pow(s_xA,2.)+pow(get_b3(),2.)*pow(s_yP,2)+pow(get_b4(),2.)*pow(s_xP,2.)+pow(cos((get_t())/((4.*atan(1.0))/200.)),2.)*pow(ss,2.)+pow(get_v(),2.)*pow((standABr)/(200./(4.*atan(1.0))),2.)+pow(get_v(),2.)*pow((standABr)/(200./(4.*atan(1.0))),2.));
      //  sigma_y=sqrt(pow(get_a1(),2.)*pow(s_yA,2.)+pow(get_a2(),2.)*pow(s_yP,2.)+pow(get_a3(),2.)*pow(s_xP,2.)+pow(get_a4(),2.)*pow(s_xA,2.)+pow(sin((get_t())/((4.*atan(1.0))/200.)),2.)*pow(ss,2.)+pow(get_w(),2.)*pow((standABr)/(200./(4.*atan(1.0))),2.)+pow(get_w(),2.)*pow((standABr)/(200./(4.*atan(1.0))),2.));
		next-&gt;next-&gt;berechne_sigma_x(y_1,get_y(),x_1,get_x(),get_sigmay(),s_yA,s_xA,get_sigmax());
    }
}
</code></pre>
<p>so ich hab jetzt mal die erste funktion vereinfacht dargestellt.<br />
Ich habe alle anderen attribute in einer liste abgespeichert, sodass ich die funktion in der main nur einmal in einer whileschleife aufrufen wollte und es mir gleich alle sigmas berechnet. Mit allen anderen parametern funktioniert das, nur eben nicht mit sigma <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="😞"
    /><br />
Punkt ist die Klasse der beidne Memberfunktionen</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/280790/2-rekursive-funktionen-die-sich-gegenseitig-aufrufen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 00:21:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/280790.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 21 Jan 2011 15:48:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 2 rekursive funktionen, die sich gegenseitig aufrufen on Fri, 21 Jan 2011 16:01:21 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>ich hoffe mir kann jemand helfen!<br />
Und zwar habe ich zwei funktionen aus einer klasse, sx und sy.<br />
sy werden parameter übergeben, die sich beim nächsten aufruf um eins versetzen sollen. (also berechne_sx(x1,x2,y1,y2,sy)<br />
-&gt;berechne_sx(x1+i,x1,y1+i,y1,sy)<br />
nun ist mein problem, dass ich zwar im ersten durchgang einen wert für sy übergebe. aber dann beim rekursiven aufruf sollte der wert, der in der funktion berechne_sy berechnet wird, übergeben werden.<br />
aber der ist zu dem zeitpunkt noch nicht berechnet.</p>
<p>Hat jemand ne idee wie ich da sproblem lösen könnte?<br />
meine derzeitigen ideen sind:<br />
-beide funktionen zu einer machen ( gibt aber leider momentan noch das falsche aus)<br />
-statt sy zu übergeben, berechne_sy(..) übergeben( was bis jetzt auch noch nicht klappt, auch nciht wenn ich es vorher als double b=berechne_sy(...) und dann als b übergeb)</p>
<p>ich würd mich sehr über hilfe freuen <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="🙂"
    /></p>
<pre><code class="language-cpp">void Punkt::berechne_sigma_y( double y_2, double y_1, double x_2, double x_1, double s_yA,double s_yP, double s_xP, double s_xA)
{
	if(next-&gt;get_next()!=NULL)
    {  
		sigma_y=sqrt(a1*s_yA+a2*s_yP+a3*s_xP+a4*s_xA+sin(t)*ss+w*standABr+w*standABr)
        next-&gt;next-&gt;berechne_sigma_y(y_1,get_y(),x_1,get_x(),get_sigmay(),s_yA,s_xA,get_sigmax();
    }
}

void Punkt::berechne_sigma_x(double y_2, double y_1, double x_2, double x_1, double s_yA,double s_yP, double s_xP, double s_xA)
{
    if(next-&gt;get_next()!=NULL)
    {
		sigma_x=sqrt(pow(get_b1(),2.)*pow(s_yA,2.)+pow(get_b2(),2.)*pow(s_xA,2.)+pow(get_b3(),2.)*pow(s_yP,2)+pow(get_b4(),2.)*pow(s_xP,2.)+pow(cos((get_t())/((4.*atan(1.0))/200.)),2.)*pow(ss,2.)+pow(get_v(),2.)*pow((standABr)/(200./(4.*atan(1.0))),2.)+pow(get_v(),2.)*pow((standABr)/(200./(4.*atan(1.0))),2.));
      //  sigma_y=sqrt(pow(get_a1(),2.)*pow(s_yA,2.)+pow(get_a2(),2.)*pow(s_yP,2.)+pow(get_a3(),2.)*pow(s_xP,2.)+pow(get_a4(),2.)*pow(s_xA,2.)+pow(sin((get_t())/((4.*atan(1.0))/200.)),2.)*pow(ss,2.)+pow(get_w(),2.)*pow((standABr)/(200./(4.*atan(1.0))),2.)+pow(get_w(),2.)*pow((standABr)/(200./(4.*atan(1.0))),2.));
		next-&gt;next-&gt;berechne_sigma_x(y_1,get_y(),x_1,get_x(),get_sigmay(),s_yA,s_xA,get_sigmax());
    }
}
</code></pre>
<p>so ich hab jetzt mal die erste funktion vereinfacht dargestellt.<br />
Ich habe alle anderen attribute in einer liste abgespeichert, sodass ich die funktion in der main nur einmal in einer whileschleife aufrufen wollte und es mir gleich alle sigmas berechnet. Mit allen anderen parametern funktioniert das, nur eben nicht mit sigma <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="😞"
    /><br />
Punkt ist die Klasse der beidne Memberfunktionen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009790</guid><dc:creator><![CDATA[gast999999]]></dc:creator><pubDate>Fri, 21 Jan 2011 16:01:21 GMT</pubDate></item><item><title><![CDATA[Reply to 2 rekursive funktionen, die sich gegenseitig aufrufen on Fri, 21 Jan 2011 15:53:56 GMT]]></title><description><![CDATA[<p>Bitte vereinfache dein Beispiel stark und zeige etwas mehr Code. Was ist beispielsweise Punkt und wieso hat es ein Attribut next?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009801</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Fri, 21 Jan 2011 15:53:56 GMT</pubDate></item><item><title><![CDATA[Reply to 2 rekursive funktionen, die sich gegenseitig aufrufen on Fri, 21 Jan 2011 16:06:45 GMT]]></title><description><![CDATA[<p>gast999999 schrieb:</p>
<blockquote>
<p>Hallo!<br />
[...]dass ich zwar im ersten durchgang einen wert für sy übergebe,<br />
aber dann beim rekursiven aufruf sollte der wert,<br />
der in der funktion <em>berechne_sy</em> berechnet wird, übergeben werden.<br />
aber der ist zu dem zeitpunkt noch nicht berechnet.</p>
</blockquote>
<p>?? ist denn</p>
<pre><code class="language-cpp">this-&gt;sigma_y != this-&gt;get_sigmay()
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2009808</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009808</guid><dc:creator><![CDATA[zeusosc]]></dc:creator><pubDate>Fri, 21 Jan 2011 16:06:45 GMT</pubDate></item><item><title><![CDATA[Reply to 2 rekursive funktionen, die sich gegenseitig aufrufen on Fri, 21 Jan 2011 16:16:22 GMT]]></title><description><![CDATA[<p>ich weiß nicht ob das so viel weiterhilft, aber so ist der aufruf in der main?<br />
ich weiß, ist ziemlich umständlich programmiert</p>
<pre><code class="language-cli">durchlaufZeiger=start;
    start-&gt;berechne_sigma_y(yP,yA,xP,xA,syA,syP,sxP,sxA);
    double sigmay_neu;
    double hh=1;
    dat&lt;&lt;&quot;Standardabweichung der Neupunkte:&quot;&lt;&lt;endl;

    while (durchlaufZeiger-&gt;get_next()-&gt;get_next()!=NULL)
    {
        sigmay_neu=durchlaufZeiger-&gt;get_sigmay();

        dat&lt;&lt;&quot;sigma_y&quot;&lt;&lt;hh++&lt;&lt;&quot;: &quot;&lt;&lt;durchlaufZeiger-&gt;get_sigmay()&lt;&lt;endl;
        durchlaufZeiger=durchlaufZeiger-&gt;get_next();
        durchlaufZeiger=durchlaufZeiger-&gt;get_next();

    }

    dat&lt;&lt;endl;
    durchlaufZeiger=start;
    start-&gt;berechne_sigma_x(yP,yA,xP,xA,syA,syP,sxP,sxA);
    double sigmax_neu;
    double aa=1;
    while (durchlaufZeiger-&gt;get_next()-&gt;get_next()!=NULL)
    {
        sigmax_neu=durchlaufZeiger-&gt;get_sigmax();

        dat&lt;&lt;&quot;sigma_x&quot;&lt;&lt;aa++&lt;&lt;&quot;: &quot;&lt;&lt;durchlaufZeiger-&gt;get_sigmax()&lt;&lt;endl;
        durchlaufZeiger=durchlaufZeiger-&gt;get_next();
        durchlaufZeiger=durchlaufZeiger-&gt;get_next();

    }
</code></pre>
<p>@zeusoc:<br />
ich speichere das ergebniss sigma_y in get_sigmay</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009811</guid><dc:creator><![CDATA[gast999999]]></dc:creator><pubDate>Fri, 21 Jan 2011 16:16:22 GMT</pubDate></item><item><title><![CDATA[Reply to 2 rekursive funktionen, die sich gegenseitig aufrufen on Fri, 21 Jan 2011 16:21:11 GMT]]></title><description><![CDATA[<p>zeusosc schrieb:</p>
<blockquote>
<p>gast999999 schrieb:</p>
<blockquote>
<p>Hallo!<br />
[...]dass ich zwar im ersten durchgang einen wert für sy übergebe,<br />
aber dann beim rekursiven aufruf sollte der wert,<br />
der in der funktion <em>berechne_sy</em> berechnet wird, übergeben werden.<br />
aber der ist zu dem zeitpunkt noch nicht berechnet.</p>
</blockquote>
<p>?? ist denn</p>
<pre><code class="language-cpp">this-&gt;sigma_y != this-&gt;get_sigmay()
</code></pre>
</blockquote>
<p>also wenn</p>
<pre><code class="language-cpp">this-&gt;sigma_y == this-&gt;get_sigmay()
</code></pre>
<p>dann ist doch zum &quot;zeitpunkt&quot; des rekursiven aufrufes sy schon berechnet!</p>
<p>beschreibe mal die berechnung deines sigmas mathematisch und gebe mal an<br />
wie du dein Werte Array aufbaust!</p>
<p>grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009816</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009816</guid><dc:creator><![CDATA[zeusosc]]></dc:creator><pubDate>Fri, 21 Jan 2011 16:21:11 GMT</pubDate></item></channel></rss>