Ich versuche, ein Programm zu machen, die eine bestimmte Summe, bis irgendwann gibt, die ich definieren, hier ist sie:Rekursionsfunktion; „... hat aufgehört zu arbeiten“
float sum(int n,float m);
main(void) {
float a,m=1.0;
int n;
scanf_s("%ld", &n);
a = sum(n, m);
printf("%f", a);
}
float sum(int n, float m) {
if ((n/m) < 0.0005) {
return 0;
}
else {
return n/m + sum(n, m + 2);
}
}
(Beachten Sie, dass der Punkt I definiert ist 0,0005) wenn ich einen Wert größer oder gleich 5 geben, gibt mir Programm diese Fehler:
...has stopped working
auch wenn ich den definierten Punkt erhöhen 0,5 bis mag ich die Anzahl der Werte kann auch erhöht geben. Warum denkst du ist das passiert und wie kann ich es beheben?
Mögliche Duplikat [Segmentierungsfehler mit scanf mit integer] (https://stackoverflow.com/questions/26247345/segmentation-fault-using-scanf- with-integer) – Alfabravo
Aus Neugier, warum verwenden Sie eine '% ld' (für' long int') auf einem 'int'? Hast du irgendwelche Warnungen vom Compiler gesehen? – lurker
@ Alfabravo diese Frage ist nicht anwendbar. Das OP verwendet richtigerweise "& n" für den Aufruf "scanf_s". – lurker