SLC-S21W4 [SUMMARY] - Recursia

in Ukraine on Steem3 months ago
Рекурсія в природі - просто чудова, не гірша вона й в програмуванні)) В першому завданні мало хто поділився зображенням фрактала, а вони сильно пов'язані з рекурсією. Та було два завдання які більшість невірно зрозуміла. Щодо глибини рекурсії я добре розповів про це, дехто навіть подав вірний код, але не навів результат, та не зробив висновків.


image.png

місцеУчасникдописоцінка
1️⃣@event-horizonlink9.8
2️⃣@ady-was-herelink8.3
3️⃣@josephalink7.9
4️⃣@mohammadfaisallink7.1

@mohammadfaisal & @kouba01 набрали однакову кількість балів - 7.1 , але я включив в четвірку @mohammadfaisal

Решта теж гарно справилися з завданням(якщо не враховувати три завдання, де вони втратили майже 3 бали)

Самим складним виявилося завдання дослідити глибину рекурсії.
Слід було організувати вічну рекурсію, але вічною вона(на відміну від циклу) не буде
На кожен виклик витрачаються ресурси.

void f(void)
{
    f();
}
int main()
{
    f();
}

Завдання було підрахувати - це можна було зробити так:
Глобальні змінні зло - але тут використаємо її))

int k;
void f(void)
{
    k++;
    f();
}
int main()
{    
    f();
}

В Visual Studio програма аварійно зупиниться і покаже значення змінної k.
Іншим варіантом можна було б зробити так, і підібрати граничне значення де програма завершується аварійно
if(k++<100000) f();

Щоб зменшити кількість викликів слід було передати у функцію побільше різних параметрів, всі вони розміщуються на стеку - отже відбирають пам'ять.

Далі я задав два майже однакових завдання, надрукувати числа від 1 до n, та від n до 1. З погляду циклу відмінність лише в i++ та i--. А в рекурсії важливо було помітити що в одному випадку ми друкуємо n ДО виклику, а в іншому випадку ПІСЛЯ виклику функції.

У мене в самого викликало великий подив знайти суму рекурсивно. Це вже я додав вам таку підказку що без прямого використання додавання.

Стосовно ж останнього завдання, яке було дуже схоже за алгоритмом до друку чисел від 1 до n, та від n до 1. Аналогічне воно тим, що ми друкуємо символ, а потім спускаємося в рекурсію. А для оберненого друку спускаємся рекурсію, а потім по поверненню виконуємо друк символа.

Дякую всім за участь, сподіваюся в наступному завдання ви проявите творчість на фантазію також

Sort:  
Loading...

Coin Marketplace

STEEM 0.17
TRX 0.24
JST 0.034
BTC 95500.34
ETH 2808.64
SBD 0.66