Vergleichsoperatoren

Neue Frage »

Auf diesen Beitrag antworten »
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....
 
Auf diesen Beitrag antworten »
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
Auf diesen Beitrag antworten »
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;
}
}
Auf diesen Beitrag antworten »
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
 
 
Neue Frage »
Antworten »


Verwandte Themen