Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Rekursiv Aufgabe mit Problem

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
26.05.2004, 11:37 Uhr
chrisuni



Ich möchte eine rekursive Funktion addi schreiben, mit zwei Parametern (a und b, beide int) welche die Summe aller ganzen geraden Zahlen aufaddiert.
Habe die iterative Lösung bereits hinbekommen... nur bei der rekursiven habe ich Probleme.

1. Wie kann ich die Abfrage machen das ich nur gerade ganze Zahlen berücksichtige...
2. Wie kriege ich das mit der rekursion hin...

Vielen Dank im Voraus, Gruß Chris


C++:
#include <iostream>
#include <conio.h>
using namespace std;

int addi(int x, int y);

main()
{
int a = 0;
int b = 0;

cout <<"\nBitte geben Sie 2 Zahlen ein: " << endl;
cin >> a;
cout << endl;
cin >> b;
cout << endl;

addi (a,b);

getch();
return 0;
}

int addi(int x,int y)
{
int i;
int ergebnis;
for (i = x; i <= y; i++)
{
if (x = ungerade) // Zu Punkt 1
{
return addi(x,y);
}
else
{
ergebnis = ergebnis + x;
return addi(x,y);           // zu Punkt 2
}
cout <<"\nDas Ergebnis lautet: " << ergebnis;
}
}



--
gruß chris

nehmts mir net übel ich bin nen Anfänger und seh manchmal den Wald vor lauter Bäumen nicht mehr ;)

Dieser Post wurde am 26.05.2004 um 11:47 Uhr von chrisuni editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.05.2004, 11:52 Uhr
virtual
Sexiest Bit alive
(Operator)



C++:
int addi(int x, int y)
{
    if (x>=y) return 0;
    if (x%2)
        return addi(x+1, y);
    else
        return x + addi(x+2, y);
}


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 26.05.2004 um 11:53 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
26.05.2004, 11:55 Uhr
virtual
Sexiest Bit alive
(Operator)


Oder:

C++:
int addi(int x, int y)
{
     return x<y? x*(1-x%2)+addi(x+1,y):0;
}


Falls Du golfer bist
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 26.05.2004 um 11:56 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
26.05.2004, 12:12 Uhr
chrisuni



sry ich bekomms net hin... kannste mir noch schnelle zeigen wie ich Deinen Code bei mir unterbringen muss (s.o.) das das funzt... hab gerade vieles durchprobiert aber ich weiß es wirklich net
danke
--
gruß chris

nehmts mir net übel ich bin nen Anfänger und seh manchmal den Wald vor lauter Bäumen nicht mehr ;)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
26.05.2004, 12:28 Uhr
virtual
Sexiest Bit alive
(Operator)


Angenommen mein ungetester Code ist okay, dann:

C++:
#include <iostream>
#include <conio.h>
using namespace std;

int addi(int x, int y);

main()
{
int a = 0;
int b = 0;

cout <<"\nBitte geben Sie 2 Zahlen ein: " << endl;
cin >> a;
cout << endl;
cin >> b;
cout << endl;

cout << "Das ergbnis lautet: "<<addi (a,b)<<endl;

getch();
return 0;
}

int addi ...


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
26.05.2004, 12:33 Uhr
chrisuni



sry aber "Das Ergebnis lautet 0" es funktioniert so nicht...





C++:
#include <iostream>
#include <conio.h>
using namespace std;

int addi(int x, int y);

main()
{
int a = 0;
int b = 0;

cout <<"\nBitte geben Sie 2 Zahlen ein: " << endl;
cin >> a;
cout << endl;
cin >> b;
cout << endl;

cout << "Das ergbnis lautet: "<<addi (a,b)<<endl;

getch();
return 0;
}

int addi(int x, int y)
{
    if (x>=y) return 0;
    if (x%2)
        return addi(x+1, y);
    else
        return x + addi(x+2, y);
}




--
gruß chris

nehmts mir net übel ich bin nen Anfänger und seh manchmal den Wald vor lauter Bäumen nicht mehr ;)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
26.05.2004, 12:41 Uhr
virtual
Sexiest Bit alive
(Operator)


Komisch, wenn ich 1 und 10 als Zahlen eingebe, bekomme ich 20 raus, was auch durchaus als korrekt ansehbar ist.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
26.05.2004, 12:49 Uhr
chrisuni



sry vielmals, ich weiß auch net was da los war es funktioniert natürlich... habe den compiler nochmal neu gestartet und es hat geklappt vielen danke nochmal..

P.s. wenn ich 6 und 8 bspw. eingebe dann zeigt er mir an 6

wenn die Fragestellung so lautet:
" Summe aller ganzen Zahlen zwischen a und b " heißt es dann das er mi normalerweise bei 6 und 8 14 ausgeben müsste oder nur 6 oder nur 8 oder gar nichts.... eigentlich doch dann gar nichts....
wie müsste ich denn dann den code ändern ?

Tut mir leid für diese einfachen Fragen aber so langsam lern ich Dinge, aber ebend nur in dem ich teilweise die Lösung eines Problems von mir ansehe, selber komm ich öfters nicht drauf...
--
gruß chris

nehmts mir net übel ich bin nen Anfänger und seh manchmal den Wald vor lauter Bäumen nicht mehr ;)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
26.05.2004, 13:42 Uhr
virtual
Sexiest Bit alive
(Operator)


Wandel "if(x>=y)" entsprechend in "if(x>y)" um.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
26.05.2004, 13:51 Uhr
chrisuni



Vielen Dank... habs auch rausgefunden, aber bei eingabe von 0 und 2 zweigt er mir trotzdem als Ergebnis die 2 an :P... Aber egal, das ist jetzt aber gut.. glaube das geht nicht anders, zumindest in dieser Form
--
gruß chris

nehmts mir net übel ich bin nen Anfänger und seh manchmal den Wald vor lauter Bäumen nicht mehr ;)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: