need help plz!
-
mulo schrieb:
[...] do {k=n*--n;} while(false); [...]*lol* --> ioccc!?
#include <iostream> unsigned long faculty( unsigned long value ) { if( !value ) { return 1; } return value * faculty( value - 1 ); } int main( ) { std::cout << faculty( 3 ) << std::endl; }Funktioniert natürlich nur für den Wertebereich eines unsigned long's (Ergebnis).
greetz, Swordfish
-
versteh ich überhaupt nicht -.- was bedeutet !value?
value!=0 oder? und was meinst du mit ioccc?
mit der zeile wollte ich nur einmalig k den wert von n*(n-1) geben. War mein Ansatz denn so falsch?
-
mulo schrieb:
versteh ich überhaupt nicht -.- was bedeutet !value?
In dem Fall eine beschissene Art auf 0 zu testen.
int Faculty (int k,int n,int o,int p) // FEHLER: Die fakultät berechnet man aus genau einer zahl, nicht aus 4 { cin >> n; // FEHLER: Die Fakultät erwartet kein lesen von einem Stream do {k=n*--n;} while(false); /// FEHLER: n*--n ist nicht definiert!!! while(n>0) { o=k*--n; k=o; } return o; }
-
oh gott... oO
das was ich da machen wollte nennt sich doch dekrementieren, und das ist doch nichts weiter als 1 abzuziehen, und wäre es nich tso richtig
n=4 cout << --n << "\n" // -> 3, n wird erst dekrementiert cout << --n << "\n" // -> 2, und dann ausgegeben //etcn=4 cout << n-- << "\n" // n-> 4, n wird ausgegeben und cout << n-- << "\n" // n-> 3, erst dann dekrementiert //etcedit: ne .. hab den unterschied verstanden zwischen --n und n-1, danke
-
Helium schrieb:
In dem Fall eine beschissene Art auf 0 zu testen.
Besten dank für die Blumen...
greetz, Swordfish
-
Jo, aber n*--n...
nehmen wir an n ist 5:
erst dekrementieren, dann multiplizieren?
4*4oder vielleicht zuaberhaft eine Kopie von n zwischenspeichern, n dekrementieren und dann multiplizieren?
5*4
n*--n ist einfach nicht definiert.
-
Swordfish schrieb:
Helium schrieb:
In dem Fall eine beschissene Art auf 0 zu testen.
Besten dank für die Blumen...
Er hat aber ein wenig recht.

Du willst ja nicht testen, ob 'value' nix ist, sondern ob es null ist. Frag mal einen x-beliebigen Mathematiker, der wird Dir heimleuchten, wenn Du ihm unterjubeln willst, dass null nichts ist.
-
Swordfish schrieb:
Helium schrieb:
In dem Fall eine beschissene Art auf 0 zu testen.
Besten dank für die Blumen...
greetz, Swordfish
hehe...nimms dir nicht zu herzen die gesamte !value community steht hinter dir

-
Konrad Rudolph schrieb:
Swordfish schrieb:
Helium schrieb:
In dem Fall eine beschissene Art auf 0 zu testen.
Besten dank für die Blumen...
Er hat aber ein wenig recht.

Du willst ja nicht testen, ob 'value' nix ist, sondern ob es null ist. Frag mal einen x-beliebigen Mathematiker, der wird Dir heimleuchten, wenn Du ihm unterjubeln willst, dass null nichts ist.Einzig und allein entscheidend ist - nachdem beide Methoden im Rahmen der Sprache C++ das selbe Ergebnis liefern - wohl die Lesbarkeit. Ich finde, dass beides klar und deutlich ist. Glaubens-/Geschmacks-/Einstellungsfrage...
greetz, Swordfish
-
Rekursiv, rein intuitiv ( lol ):
#include<iostream> using namespace std; unsigned long fak( unsigned n ) { if( n==0 ) return 1; return n * fak( n - 1 ); } int main() { cout << fak(5); return 0; }
-
hmmm vllt auch einfach den Code von Swordfish kopiert!?