Аналіз алгоритму
Факторіалом числа n називається добуток чисел від 1 до n:
n! = 1 * 2 * … * (n – 1) * n
Слід запам'ятати, що факторіал нуля дорівнює одиниці:
0! = 1
Наприклад:
1! = 1;
2! = 1 * 2 = 2;
3! = 1 * 2 * 3 = 6;
4! = 1 * 2 * 3 * 4 = 24;
Зауважимо, що наприклад
5! = (1 * 2 * 3 * 4) * 5 = 4! * 5;
100! = (1 * 2 * … * 99) * 100 = 99! * 100;
n! = 1 * 2 * … * (n – 1) * n = (n – 1)! * n;
Факторіал числа можна обчислити або за допомогою циклу, або за допомогою рекурсії. У другому випадку слід скористатися рекурентною формулою:
Реалізація алгоритму
Читаємо вхідне значення n.
scanf("%lld",&n);
Обчислюємо факторіал числа res = n! = 1 * 2 * 3 * … * n.
res = 1; for(i = 1; i <= n; i++) res = res * i;
Виводимо відповідь.
printf("%lld\n",res);
Реалізація алгоритму – рекурсія
Функція fact обчислює факторіал числа n.
long long fact(long long n) { if (n == 0) return 1; return fact(n-1) * n; }
Основна частина програми. Читаємо вхідне значення n.
scanf("%lld",&n);
Обчислюємо і виводимо відповідь.
res = fact(n); printf("%lld\n",res);
Java реалізація – рекурсія
import java.util.*; public class Main { static long fact(int n) { if (n == 0) return 1; return fact(n - 1) * n; } public static void main(String[] args) { Scanner con = new Scanner(System.in); int n = con.nextInt(); long res = fact(n); System.out.println(res); con.close(); } }
Python реалізація – цикл
n = int(input()) res = 1 for i in range(1,n+1): res *= i print(res)
Python реалізація – рекурсія
def fact(n): if n == 0: return 1 return n * fact(n-1) n = int(input()) print(fact(n))