Page 86 - 4656
P. 86
Алгоритми і структури даних. Лабораторний практикум.
7 5040
8 40310
9 362880
Перше значення, 0!, визначається у верхній половині
рівняння: 0! = 1 (для n = 0). Всі інші величини визначаються в
нижній половині рівняння:
For n = 1, 1! = n! = n(n–1)! = 1(1–1)! = 1(0)! = 1(1) = 1.
For n = 2, 2! = n! = n(n–1)! = 2(2–1)! = 2(1)! = 2(1) = 2.
For n = 3, 3! = n! = n(n–1)! = 3(3–1)! = 3(2)! = 3(2) = 6.
For n = 4, 4! = n! = n(n–1)! = 4(4–1)! = 4(3)! = 4(6) = 24.
For n = 5, 5! = n! = n(n–1)! = 5(5–1)! = 5(4)! = 5(24) = 120.
Із приведеного прикладу можна замітити наскільки
швидко росте факторіальна функція.
Реалізація рекурсивної факторіальної функції
Коли функція визначається як рекурсивна, її реалізація
зазвичай є прямою трансляцією її рекурсивного визначання. Дві
частини рекурсивного визначення факторіальної функції
напряму транслюються в два оператори Java.
public static int f(int n) {
if (n == 0) {
return 1; // базова
}
return n * f(n - 1); // рекурсивна частина
}
Простий приклад для тестування функції:
public static void main(String[] args) {
for (int n = 0; n < 10; n++) {
System.out.println("f(" + n + ") = " + f(n));
}
84