Imo kdyz by ta fce vypadala takto
tak to musi davat korektni vysledek...Kód:float faktorial1(float f) { int i; for (i = f-1; i >= 2; i--) f *= i; return f; }
Imo kdyz by ta fce vypadala takto
tak to musi davat korektni vysledek...Kód:float faktorial1(float f) { int i; for (i = f-1; i >= 2; i--) f *= i; return f; }
ntb: HP EliteBook 8460p i7-2640M | 8GB RAM | 120GB SSD + 500GB HDD | ATi HD6470 | 14" HD+ | W7 PRO
home: HP Docking Station | HP L2045W | WD 500GB Scorpio Blue USB box
work: HP Docking Station | HP L2445W
audio: Epiphone G-400 SG + Sounder Telecaster | E-MU 0202 | Cambridge Audio Azur 340R | Wharfedale Diamond 9.2 | Magnat Betasub 20A | Sennheiser HD555
Ano tohle chodi a umi to spocitat maximalne 34! ... ja predtim zkousel float jen te funkce faktorial1, f sem nechal int...nechapu proc by melo f byt neco jineho nez int, prece faktorial muzu pocitat jen z celych cisel
Jinak kdyz se pouzije double umi to az 170!
muze mi ale nekdo vysvetlit proc u te druhe rekurzivni fce muze byt f integer a funguje to stejne jako double u te funkce pres cyklus for ?
double faktorial1(double f)
{
int i;
for (i = f-1; i >= 2; i--)
f *= i;
return f;
}
double faktorial2(int f)
{
if (f <= 1) return 1;
return f * faktorial2(f - 1);
}
PS: Muze mi nekdo napsat presne omezeni jednotlivych typu:
short int
int
long int
float
double
long double
Dik vsem za pomoc!
Normalni PC :)
Rozsahy typu zalezi na compileru, podivej se do napovedy...
GigaByte GA-M55plus-S3G --- A64 3200+ @ 24oo ~ 1,375V BOX --- 2x512 Geil 667 CL4 @ 980 CL5 --- WD2500KS --- Acer AL1721ms --- 1/1 MBit/s via WiFi
Blog
09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0 aneb jeste ze ty "ochrany" programujou rozumny lidi :]
Co takhle pouzit HELP co mas v cecku nebo MS MSDN, ktery mas volne pristupny na internetu![]()
Predpokladam ze pouzivas MSVC++: Type ranges
GCC by melo mit vetsinou stejne typy.
Black holes are where God divided by zero. - Steven Wright
2600K s AC HF14 | P8P67Deluxe s 16GB DDR3 | GTX1080 s LP2480zx | EVO850 s ICH10R | X-Fi s HD555 | TripleXtreme 360 s HPPS+ | Windows 10 + 7
Protoze v pripade fce s cyklem ukladas do promenne f vysledek, ktery roste a roste (proto int nestaci), kdezto v pripade rekurzivni fce je hodnota f snizujici se male cislo..napr. tech tvych 12 nebo 34 a podobne..
ntb: HP EliteBook 8460p i7-2640M | 8GB RAM | 120GB SSD + 500GB HDD | ATi HD6470 | 14" HD+ | W7 PRO
home: HP Docking Station | HP L2045W | WD 500GB Scorpio Blue USB box
work: HP Docking Station | HP L2445W
audio: Epiphone G-400 SG + Sounder Telecaster | E-MU 0202 | Cambridge Audio Azur 340R | Wharfedale Diamond 9.2 | Magnat Betasub 20A | Sennheiser HD555
V pripade malych cisel je to imho jedno. V pripade vyssich vysledku a velke vstupni hodnoty by mohlo dojit k preteceni zasobniku v pripade rekurzivni funkce.
ntb: HP EliteBook 8460p i7-2640M | 8GB RAM | 120GB SSD + 500GB HDD | ATi HD6470 | 14" HD+ | W7 PRO
home: HP Docking Station | HP L2045W | WD 500GB Scorpio Blue USB box
work: HP Docking Station | HP L2445W
audio: Epiphone G-400 SG + Sounder Telecaster | E-MU 0202 | Cambridge Audio Azur 340R | Wharfedale Diamond 9.2 | Magnat Betasub 20A | Sennheiser HD555
ntb: HP EliteBook 8460p i7-2640M | 8GB RAM | 120GB SSD + 500GB HDD | ATi HD6470 | 14" HD+ | W7 PRO
home: HP Docking Station | HP L2045W | WD 500GB Scorpio Blue USB box
work: HP Docking Station | HP L2445W
audio: Epiphone G-400 SG + Sounder Telecaster | E-MU 0202 | Cambridge Audio Azur 340R | Wharfedale Diamond 9.2 | Magnat Betasub 20A | Sennheiser HD555
Jj, vysledek vracis jako double, jenze v pripade funkce s cyklem slouzi ten vstupni parametr zaroven jako docasna promenna pro drzeni vysledku funkce, ktery musi byt double, tedy i parametr musi byt double...pokud bych nezavedl pro vysledek nejakou jinou promennou.
V pripade rekurzivni funkce staci pro parametr imho int proto, ze drzi hodnoty pouze - napr. v pripade faktorialu 3 - 3, 2 a 1 a vysledek se pocita na zasobniku, ten je pak double, protoze tam uz jsou vypoctene vyssi hodnoty v pripade vyssich "f".
ntb: HP EliteBook 8460p i7-2640M | 8GB RAM | 120GB SSD + 500GB HDD | ATi HD6470 | 14" HD+ | W7 PRO
home: HP Docking Station | HP L2045W | WD 500GB Scorpio Blue USB box
work: HP Docking Station | HP L2445W
audio: Epiphone G-400 SG + Sounder Telecaster | E-MU 0202 | Cambridge Audio Azur 340R | Wharfedale Diamond 9.2 | Magnat Betasub 20A | Sennheiser HD555
Toto téma si právě prohlíží 1 uživatelů. (0 registrovaných a 1 anonymních)