Das obige Zwischenergebnis dieser relativ kleinen Aufgabe, kann bei einigen
Programmiersprachen schon zum Überlauf führen.
z.B. sprengt es schon den Datentyp des Longword (32-Bit) bei C++
oder LongInt (32-Bit) bei Turbo Pascal.
In Java kann die Zahl im Datentyp long 64 Bit groß sein (max. 9.223.372.036.854.775.807).
Einfacher ist es über das Pascalsche Dreieck.
#include<iostream.h>
// Funktion: Pascalsches Dreieck
// Kombinationen ohne Wiederholung (k aus n oder n über k)
// Autor : DG1XPZ
// Sprache : Borland C++ V5.0
long pascalD(int k,int n);
long pMatrix[1002][1002];
void main(void){ int n,k;
cout<<"Pascalsches Dreieck \n";
cout<<"Kombinationen ohne Wiederholung (k aus
n)\n";
cout<<"Bitte 1. Zahl von \"k aus \"n eingeben:
";
cin>>k;
cout<<"Bitte 2. Zahl von \"k aus \"n eingeben:
";
cin>>n; if (k<=1000 && n<=1000){
cout<<"Bei "<<k<<" aus "<<n<<" gibt es "<<pascalD(k,n)<<" Kombinationen ohne
Wiederholung.";
}
}
long pascalD(int k,int n){ int i,j; for (i=0;i<=n;i++){
pMatrix[i][0]=1;
pMatrix[0][i]=1;
} for (j=0;j<n;j++){ for (i=0;i<n-1;i++){
pMatrix[j+1][i+1]=pMatrix[j+1][i]+pMatrix[j][i+1];
}
} return(pMatrix[n-k][k]);
}