W tym przykładzie nauczysz się znajdować silnię nieujemnej liczby całkowitej wprowadzonej przez użytkownika za pomocą rekursji.
Aby zrozumieć ten przykład, powinieneś znać następujące tematy programowania w C:
- Funkcje C
- C Funkcje zdefiniowane przez użytkownika
- C Rekursja
Silnia liczby dodatniej n jest wyrażona wzorem:
factorial of n (n!) = 1 * 2 * 3 * 4 *… * n
Silnia liczby ujemnej nie istnieje. A silnia 0
jest 1
.
W tym przykładzie nauczysz się znajdować silnię liczby za pomocą rekurencji. Odwiedź tę stronę, aby dowiedzieć się, jak znaleźć silnię liczby za pomocą pętli.
Silnia liczby przy użyciu rekurencji
#include long int multiplyNumbers(int n); int main() ( int n; printf("Enter a positive integer: "); scanf("%d",&n); printf("Factorial of %d = %ld", n, multiplyNumbers(n)); return 0; ) long int multiplyNumbers(int n) ( if (n>=1) return n*multiplyNumbers(n-1); else return 1; )
Wynik
Wpisz dodatnią liczbę całkowitą: 6 Silnia 6 = 720
Załóżmy, że użytkownik wprowadził 6.
Początkowo multiplyNumbers()
wywoływana jest from main()
z 6 przekazanym jako argument.
Następnie 5 jest przekazywane multiplyNumbers()
z tej samej funkcji (wywołanie rekurencyjne). W każdym wywołaniu rekurencyjnym wartość argumentu n jest zmniejszana o 1.
Gdy wartość n jest mniejsza niż 1, nie ma wywołania rekurencyjnego, a silnia jest ostatecznie zwracana do main()
funkcji.