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
   81   82   83   84   85   86   87   88   89   90   91