V tomto příkladu se naučíte najít faktoriál nezáporného celého čísla zadaného uživatelem pomocí rekurze.
Abychom pochopili tento příklad, měli byste mít znalosti o následujících programovacích tématech jazyka C:
- Funkce C.
- C Uživatelem definované funkce
- C Rekurze
Faktoriál kladného čísla n je dán vztahem:
factorial of n (n!) = 1 * 2 * 3 * 4 *… * n
Faktoriál záporného čísla neexistuje. A faktoriál 0
je 1
.
V tomto příkladu se naučíte najít faktoriál čísla pomocí rekurze. Na této stránce najdete informace o tom, jak najít faktoriál čísla pomocí smyčky.
Faktoriál čísla pomocí rekurze
#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ýstup
Zadejte kladné celé číslo: 6 Factorial of 6 = 720
Předpokládejme, že uživatel zadal 6.
Zpočátku multiplyNumbers()
je volán z main()
6 předán jako argument.
Potom se předá 5 multiplyNumbers()
ze stejné funkce (rekurzivní volání). V každém rekurzivním volání se hodnota argumentu n sníží o 1.
Když je hodnota n menší než 1, neexistuje žádné rekurzivní volání a faktoriál se nakonec vrátí do main()
funkce.