matematykaszkolna.pl
program z użyciem funkcji, która oblicza n! Johny: Hej, muszę napisać program z użyciem funkcji, która oblicza n! napisałem go tylko ze gdzies jest błąd, może ktoś sprawdzic #include <stdio.h> long int silnia(int n) { long int sil=1; int i; for(i=1;i<=n;i++) sil=sil*i; return sil; } int main() { int n; printf("Prosze podac liczbe z ktorej chcesz policzyc silnie: "); scanf("%d",&n); printf("Silnia z %d rowna sie %ld\n",n,silnia(n)); return 0; }
8 gru 20:41
Dziadek Mróz: Algorytm jest błędny z zasady bo nie posiada ograniczeń. 0! = 1! = 1 2! = 1 * 2 = 2 3! = 1 * 2 * 3 = 6 ... Są dwie metody: − iteracyjna − taka jak Twoja − rekurencyjna − krótsza w zapisie Iteracyjna polega na wymnażaniu w pętli zmniejszających/zwiększających się ciągów liczb <= n. Rekurencyjna polega na ograniczeniach w algorytmie, jak wyżej (0! = 1 i 1! = 1) oraz n! = n*(n−1)!. http://ideone.com/jRO9i5 W kodzie dodałem opcję zwracającą −1 dla n < 0. To zwykle jest kod błędu w takich przykładach funkcji zwracających wartości >= 0.
11 gru 11:19