У чому перевага рекурсіі?

Рекурсія функції – це функція, яка звертається до самої себе. Звернемо увагу на «життєвий» приклад, який може працювати у програмуванні.

Уявіть, що вам треба зайти у кімнату, яка зачинена. Поруч знаходиться коробка, на котрій вказано, що ключ знаходиться в ній. Відкриваєте коробку і диво — всередині ще коробки. А в них ще коробки. І так буде продовжуватись до певного моменту. Що ж можна зробити аби знайти потрібну коробку з ключем? 

Для цього існує два методи.

У першому випадку ви застосуєте цикл «while». Тобто ви будете відкривати коробку за коробкою і так поки не відкриєте ту саму потрібну, в якій знаходиться ключ. Цей метод називається ітераційним, або покроковим.

def summa(n):

    x = 0

    for n in range(1, n+1):

        x += n

    return x

   

print(summa(5))


>>> 15

З іншого боку, у нас є завдання, дії в якому повторюються, змінюються лише параметри, тому ми можемо використати й рекурсивний метод. Тобто, розв'язати задачу, використавши її саму.

def summa(n):

    if n == 1:

        return 1

    return n + summa(n-1)

   

print (summa(5))   

>>> 15

У цьому прикладі summa(1) – це 1, summa(2) – це 2 + summa(1) і так далі. Даний алгоритм простіше буде зрозуміти на наступній схемі:

Загалом, обидва алгоритми працюють і виконують потрібне нам завдання – шукають «коробку з ключем». До того ж, у такому випадку метод рекурсії не матиме особливої переваги над ітераційним.

Однак рекурсія функції краще вирішує складні, багаторівневі завдання. Метод рекурсії допоможе виконати їх швидше та зрозуміліше, а ще, що важливо, рішення завдань методом рекурсії легше підтримувати. Окрім того, перевага рекурсивних функцій над ітеративними - це простота коду. 


Коментарі

Популярні дописи з цього блогу

Рекурсія у програмуванні

Дивовижні витвори