Hallo. Kann mir jemand den Fehler in diesem Programm erklären?
-------------------------------------------------------------
#include <stdio.h>
float fakultaet(int n)
{
float fak = 1.0;
if(n == 1)return;
printf( "Fakultaet von %d = %f\n", n, fak ) ;
fak = n * fakultaet(n-1);
printf( "Fakultaet von %d = %f\n", n, fak ) ;
return fak ;
}
int main()
{
int n;
printf("Geben sie eine Zahl ein\n");
scanf("%d", &n);
fakultaet((int)n);
}
---------------------------------------------
Wenn ich nur int Variablen benutze funktioniert es. Wenn ich doubles oder floats verwende wir beim letzten rekursiven Aufruf "fak" 0 anstatt 1(und dann 2,6,24,120....) zu werden. Wieso???? mit int Variablen funktioniert es ja.
-------------------------------------------------------------
#include <stdio.h>
float fakultaet(int n)
{
float fak = 1.0;
if(n == 1)return;
printf( "Fakultaet von %d = %f\n", n, fak ) ;
fak = n * fakultaet(n-1);
printf( "Fakultaet von %d = %f\n", n, fak ) ;
return fak ;
}
int main()
{
int n;
printf("Geben sie eine Zahl ein\n");
scanf("%d", &n);
fakultaet((int)n);
}
---------------------------------------------
Wenn ich nur int Variablen benutze funktioniert es. Wenn ich doubles oder floats verwende wir beim letzten rekursiven Aufruf "fak" 0 anstatt 1(und dann 2,6,24,120....) zu werden. Wieso???? mit int Variablen funktioniert es ja.
Zuletzt bearbeitet: