Kombinations Algorithmus
Geizhals » Forum » Programmierung » Kombinations Algorithmus (49 Beiträge, 321 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
.
Re: Kombinations Algorithmus
17.11.2003, 23:27:26
!!! Rekursion ist folgendes: !!!

printf("%ld\n",fac(10));

long fac(long argument)
{
if(argument<0) return -1; /* mathematischer Fehler */
if(argument==0) return 1; /* Ende der rekursiven Faktorierung erreicht */

return argument * fac(argument-1); /* "Funktion fac"´s erneuter Aufruf ihrerselbst */
}

<<---------------------------------->>
>>----Was tatsächlich gemeint ist----<<
<<---------------------------------->>

!!! Was gesucht ist in Deinem Beispiel und Wunsch ist die Zählung von Zahlen im Bereich von 0 bis x, wobei x sich aus 2^n - 1 ermittelt und n die Anzahl von Variablen ist, die die Zustände 0 oder 1 annehmen können. !!!

Die Lösung in einem C-Programm schaut so aus:

#include
#include

int main (void)
{
int n,bit;
int *pv,*p_bit;
long anzahl,zaehlerstand;


printf("Wieviele Variablen soll es geben, bitte um Ihre Eingabe (1-50) > ");
scanf("%d",&n);

if(n<1 n/>50)
{
printf("Die Eingabe liegt außerhalb des gültigen Wertebereichs von 1 und 50\n");
return -1;
}

pv= malloc(sizeof(int)*n); /* Speicher reservieren für v_array, Anfangsadresse des Integerarrays in pv Zeigervariable abspeichern */

/* v[i] für alle i von 0 bis n-1 auf Null setzen */
for(p_bit=pv,bit=0;bit0;anzahl--)
{

/* für jeden Zählerstand alle Bits (=Null/Eins Variablen) abarbeiten von 0 bis n-1 */
for(zaehlerstand=anzahl,p_bit=pv,bit=n-1;bit>=0;bit--)
{
  *p_bit++= zaehlerstand % 2;
  zaehlerstand >>= 1; /* durch 2 dividieren = den Wert um ein Bit nach rechts schieben */

  meine_funktion_die_mit_v_array_arbeitet(pv,n); /* Übergabe der Startadresse des Arrays der int Variablen an die Funktion */
}
}

return 0;
}

Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung