В този пример ще се научите да намирате факториал на неотрицателно цяло число, въведено от потребителя с помощта на рекурсия.
За да разберете този пример, трябва да имате познанията по следните теми за програмиране на C:
- C Функции
- C Потребителски дефинирани функции
- C Рекурсия
Факториалът на положително число n се дава от:
factorial of n (n!) = 1 * 2 * 3 * 4 *… * n
Факториалът на отрицателно число не съществува. И факториалът на 0
е 1
.
Ще се научите да намирате факториал на число, използвайки рекурсия в този пример. Посетете тази страница, за да научите как можете да намерите факториал на число с помощта на цикъл.
Факториал на число, използващо рекурсия
#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; )
Изход
Въведете положително цяло число: 6 Факториал от 6 = 720
Да предположим, че потребителят е въвел 6.
Първоначално multiplyNumbers()
се извиква от main()
с 6, подадени като аргумент.
След това се предава на 5 multiplyNumbers()
от същата функция (рекурсивно повикване). При всяко рекурсивно извикване стойността на аргумент n се намалява с 1.
Когато стойността на n е по-малка от 1, няма рекурсивно извикване и факториалът се връща в крайна сметка към main()
функцията.