Die eine Funktion ist rekursiv gelöst, die andere nicht rekursiv. Für große Werte (bspw. n=20 k=10) bekomme ich unterschiedliche Ergebnisse.. kann mir jemand erklären woran das liegt?
rekursive Funktion:
int binomialCoefficient( int n, int k ) { if (n < 0 || k < 0 ){ return -1; } if ( k == n || k == 0 ){ return 1; } return binomialCoefficient(n-1,k) + binomialCoefficient(n-1, k-1); }
nicht rekursive Funktion:
int faktorial(int n) { if (n == 0 || n == 1 ) { return 1; } else { return n*faktorial(n-1); } } int binominalCoefficient(int n, int k) { // n oder k negativ? if (n < 0 || k < 0 ){ return -1; } if ((0 <= n) && (n < k)) { return 0; } return faktorial(n)/(faktorial(k)*faktorial(n-k)); }
Dieser Beitrag wurde von F481 bearbeitet: 26. Juni 2014 - 15:42