Зараз обговорюють

"Тобто є ряд завдань, які взагалі без рекурсії не наважуються."  - це як розуміти? Перефразуй, будь ласка. 

виправив, йшлося про те що деякі завдання можна вирішити лише при використанні рекурсії

Спасибі дуже корисна стаття

А ще щось планується подібного найближчим часом?


Дякую за підтримку, радий що Вам сподобалось!

Так маю вже майже дороблений проект по управлінні Audio файлом, на заміну стандартним клавішам управління HTML5, але ще не встиг відтестувати програвання файлів з інтернету, поки лише локально працює

Надіюсь найближчим часом дороблю й закину

Рахунки

webmoneyeur - E385818210641
usd - Z304643423050
uah - U354026817492
rub - R301704373231easypay80002677bitcoin1F5HRGroUtEQW9HBNbeew8iKh5KQ8vJxzw

Зворотній зв'язок

Для покращення роботи сайту надсилайте свої зауваження:
mailЗауваження
mailПропозиція

Статистика

UkrNET - поисково-информационный ресурс

VBA : Рекурсія

При програмуванні багато завдань вирішуються на основі рекурсії. Тобто є ряд завдань, які взагалі без рекурсії не можна вирішити. Це завдання імітації людського інтелекту на основі перебору варіантів. Без рекурсії є можливість вирішити такі завдання тільки для окремих випадків.

Рекурсивна процедура - це процедура викликає сама себе. Класичний приклад підрахунок факторіала. Ми то його і реалізуємо:

Sub Test()
Dim needNum As Integer
    needNum = CInt(InputBox("Введіть ціле число для якого необхідно обчислити факторіал:", ""))
    If needNum > 0 Then
        MsgBox "Факторіал " & needNum & " = " & Str(Factorial(needNum)), vbInformation + vbOKOnly, ""
    Else
        MsgBox "Введене значення не відповідає умові", vbInformation + vbOKOnly, ""
    End If
End Sub
Function Factorial(n As Integer)
    If n < 1 Then
        Factorial = 1
    Else
        Factorial = Factorial(n - 1) * n
    End If
End Function 

Примітка: Дана функція порахує максимум для числа 170

В Excel немає рекурсивних об'єктів. Листи, книги, осередки не рекурсивні, але Ви можете створювати дані використовуючи структури і створювати дерева. Для обробки їх зручно використовувати рекурсію.

Розгляд рекурсивних процедур

Обмежують умови. Необхідно розробити рекурсивную процедуру для перевірки принаймні однієї умови, що може перервати рекурсію, а також необхідно розглянути випадки, коли така умова не виконується протягом розумного числа рекурсивних викликів. Без, принаймні, однієї умови, яка може бути виконана без помилок, виникає великий ризик виконання в нескінченному циклі.

Використання пам'яті. Додаток має обмежений обсяг простору для локальних змінних (стекова пам'ять). Кожен раз, коли процедура викликає саму себе, вона використовує більше цього простору для додаткових копій її локальних змінних. Якщо цей процес буде тривати невизначено довго, він в кінцевому рахунку викличе помилку StackOverflowException.

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

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

Виклик з дужками. Коли процедура Function рекурсивно викликає саму себе, після імені процедури слід ставити дужки, навіть якщо відсутня список аргументів. В іншому випадку ім'я функції сприймається як її значення, що повертається.

Тестування. Якщо Ви пишете рекурсивну процедуру, необхідно перевірити її дуже уважно, щоб переконатися в тому, що вона завжди задовільняє деяку граничну умову. Слід також переконатися в тому, що в результаті занадто великої кількості рекурсивних викликів ви не витратите всю доступну пам'ять.


view352like0dislike0 avatard_l4w clock 2016-09-15 04:54

Коментарі:


Eng | 2018-08-13
"Тобто є ряд завдань, які взагалі без рекурсії не наважуються."  - це як розуміти? Перефразуй, будь ласка. 

Notice: Undefined index: USER_ID in /storage/ssd1/871/7368871/public_html/page/comments/main.php on line 30
d_l4w | 2018-08-13
виправив, йшлося про те що деякі завдання можна вирішити лише при використанні рекурсії

Notice: Undefined index: USER_ID in /storage/ssd1/871/7368871/public_html/page/comments/main.php on line 30

Про нас

"Programmers World" розроблено з метою полегшення в освоєнні навичок програмування, та поширення матеріалів з сфери ІТ Українською мовою.

Кожен бажаючий може безкоштовно користуватися ресурсами сайту, щоб:

- Вивчати теоретичні аспекти мов програмування

- Переглядати практичне застосування теорії при виконанні різних міні проектів з відкритим кодом

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

- Спілкуватись з іншими користувачами та обмінюватись досвідом

Сайт функціонує на безопланій основі та ентузіазмі розробника, якщо Ви бажаєте долучитись до розвитку даного проекту то можете пожертвувати кошти на рахунки розміщені в блоці "Допомога сайту".

Сайт

Зареєстровані користувачі можуть скористатися системою діалогів, в профілі користувача, для отримання потрібної інформації. Написати!

Також Ви можете використати форми відправки Зауважень та Пропозицій.


Електронна пошта

Ви можете звертатись на нашу поштову скриньку site.programmersworld@gmail.com

www.000webhost.com