V tomto príklade sa naučíte nájsť faktoriál nezáporného celého čísla zadaného používateľom pomocou rekurzie.
Aby ste pochopili tento príklad, mali by ste mať znalosti nasledujúcich tém programovania v jazyku C:
- C Funkcie
- C Užívateľom definované funkcie
- C Rekurzia
Faktoriál kladného čísla n je daný:
factorial of n (n!) = 1 * 2 * 3 * 4 *… * n
Faktoriál záporného čísla neexistuje. A faktoriál 0
je 1
.
V tomto príklade sa naučíte nájsť faktoriál čísla pomocou rekurzie. Na tejto stránke nájdete informácie o tom, ako nájsť faktoriál čísla pomocou slučky.
Faktoriál čísla pomocou rekurzie
#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; )
Výkon
Zadajte kladné celé číslo: 6 Faktoriál zo 6 = 720
Predpokladajme, že užívateľ zadal 6.
Spočiatku multiplyNumbers()
je volaný z main()
čísla 6 odovzdaný ako argument.
Potom sa multiplyNumbers()
z tej istej funkcie odovzdá 5 (rekurzívne volanie). V každom rekurzívnom volaní sa hodnota argumentu n zníži o 1.
Keď je hodnota n menšia ako 1, neexistuje rekurzívne volanie a faktoriál sa nakoniec vráti do main()
funkcie.