Rekursion
-
hallo...ich mache gerade rekursionen durch und habe ein kleines prog. geschrieben -> Eine Schnur soll zerlegt werden in 1m und in 2m. ist ja noch kein problem! aber jetzt überlege ich mir wie ich das gleiche nur für 1,2,3 und 4m machen soll!!?
mein prog. mit 1m und 2m! ausgabe mit 1m = '*' und 2m = '-'
und kann mir jemand bitte sagen wie ich in c-blöcken mein prog. ins forum stellen kann??
danke im voraus...
char a[100];
void zerlege(int l, int p){ // l ist die Restlaenge und p ist die position im array
int i;
if(l > 1){
a[p]='';
zerlege(l-1, p+1);
a[p]='-';
zerlege(l-2, p+1);
} else {
for(i=0; i<p; i++){
printf("%c", a[i]);
}
if(l==1){
printf("");
}
printf("\n");
}}
int main(int argc, char *argv[]){
int x;
printf("Geben Sie die Laenge der Schnur ein! ");
scanf("%d", &x);
printf("\n");zerlege(x,0);
system("PAUSE");
return 0;
}
-
So kannst du deinen Code bequem posten:
Der Code
-
char a[100]; void zerlege(int l, int p){ // l ist die Restlaenge und p ist die position im array int i; if(l > 1){ a[p]='*'; zerlege(l-1, p+1); a[p]='-'; zerlege(l-2, p+1); } else { for(i=0; i<p; i++){ printf("%c", a[i]); } if(l==1){ printf("*"); } printf("\n"); } } int main(int argc, char *argv[]){ int x; printf("Geben Sie die Laenge der Schnur ein! "); scanf("%d", &x); printf("\n"); zerlege(x,0); system("PAUSE"); return 0; }
aha..und hat keiner eine idee wie ich das oben machen soll.....??
-
#include <stdio.h> /* l // schnurlänge x // länge eienes teils in meter */ void schnur_zerlegegator_version01_beta( int l, int x ) { puts("schnur_zerlegegator_version01_beta\n"); if ( l/x ) printf("Schnur %dm teilbar in %d 1m Teile.\n", l, l/x ); if ( l%x ) printf("Rest: %d\n", l%x ); } int main() { schnur_zerlegegator_version01_beta( 10, 3 ); return 0; }
-
ja gut, vil habe ich mich zu wenig ausgedrück! ich muss das ganze rekursiv machen! und zwar ist z.b.: 1m * und 2m -, und es sollen alle möglichkeiten ausgegeben werden!
***** = 5m ||
***- = 5m ||
**-* = 5m ||
und so weiter, das soll rekursiv geschehen!
aber trotzdem danke
-
fabio_cannavaro schrieb:
... ich muss das ganze rekursiv machen! und zwar ist z.b.: 1m * und 2m -, und es sollen alle möglichkeiten ausgegeben werden!
***** = 5m ||
***- = 5m ||
**-* = 5m ||
und so weiter, das soll rekursiv geschehen!
...kapiert das jemand? ich nicht.
-
Eine Schnur soo in Stücke von einer 1m-4m länge zerschnitten werden. Alle möglichen Kombinationen sind für eine Eingegebene Länge l auszugeben. Bsp. * = 1m
- = 2mAusgabe: *****
*-
*\_\
*-**
-***
--
--
--*Das sind alle möglichkeiten von meinem bsp. was ich zusammengebracht habe mit 1m und 2m zerlegen. Aber jetzt muss ich das ganze in 1m,2m,3m und 4m zerlegen und alle möglichkeiten ausgeben, das ganze rekursiv.
verstanden??
-
Du musst halt auf jeder Rukursionsstufe schauen, ob die Restlänge noch reicht, um ein 1, 2, 3 oder 4m Stück abzuschneiden, und damit dann die Rekursion aufrufen. Wenn du dein Seil komplett zerlegt hast, musst du noch die Ausgabe machen.
Sobald du aus der Rekursion zurückkehrst, musst du natrürlich auch das char array aktualisieren...