Die letzten 4 Beiträge |
Karlito |
Hallo lfs2,
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
|
#include<stdio.h>
int succ(int x){
return ++x;
}
int pre(int x){
return --x;
}
int add(int x, int y){
if(y>0){
return add(succ(x), pre(y));
}
if(y<0){
return add(pre(x), succ(y));
}
return x;
}
int sub(int x, int y){
if(y){
return sub(pre(x), pre(y));
} else {
return x;
}
}
int mul(int x, int y){
if (y) {
return add(x, mul(x, pre(y)));
} else {
return 0;
}
}
int main()
{
int a, b;
printf("Geben Sie zwei Zahlen zum addieren ein\n");
scanf("%d%d",&a,&b);
printf("Die Summe betraegt = %d\n", add(a,b));
printf("Die Differenz betraegt = %d\n", sub(a,b));
printf("Das Produkt betraegt = %d\n", mul(a,b));
return 0;
}
|
|
Falls dazu noch Fragen sind, kannst Du sie gerne hier stellen.
Gruß,
Karlito |
lfs2 |
Ich probiere es aus aber komme nicht wirklich auf ein Ergebnis.
Habe jetzt hier öfter mal was geändert, aber klappt nicht.
int sub(int x, int y){
if(y){
return sub(succ(x), pre(y));
}
else {
return x;
}
} |
Karlito |
Hallo lfs2,
schau dir mal die Implementierung für add an. Danach solltest Du den Rest hinbekommen?
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
|
#include<stdio.h>
int succ(int x){
return ++x;
}
int pre(int x){
return --x;
}
int add(int x, int y){
if(y){
return add(succ(x), pre(y));
}
else {
return x;
}
}
int main()
{
int a, b;
printf("Geben Sie zwei Zahlen zum addieren ein\n");
scanf("%d%d",&a,&b);
printf("Die Summe betraegt = %d\n", add(a,b));
return 0;
}
|
|
Gruß,
Karlito |
lfs2 |
Vergleichsoperatoren
Meine Frage:
Hallo zusammen,
habe hier eine Aufgabe, welche rekursive Funktionen behandelt.
Ich bräuchte Hilfe, weil ich momentan nicht weiterkomme.
Meine Ideen:
Wenn ich mal den ersten Teil betrachte:
Falls ich ganz gewöhnlich zwei Werte addieren würde, hätte ich als Programm:
#include<stdio.h>
int main()
{
int a, b, c;
printf("Geben Sie zwei Zahlen zum addieren ein\n");
scanf("%d%d",&a,&b);
c = a + b;
printf("Die Summe betraegt = %d\n",c);
return 0;
}
Da ich aber rekursiv implementieren soll, müsste ich anders vorgehen. Über Vergleichsoperationen kann ich sagen, dass zum Beispiel:
(x%2 == 0) liefert ture falls x eine gerade ganze Zahl. Dann gibt´s natürlich noch andere Operationen, die man statt == einsetzen kann.
Ich verstehe nun auch nicht, wie ich damit ein Programm implementieren soll,
was addiert....
lfs2 hat dieses Bild (verkleinerte Version) angehängt:
|
|
|