SLC-S21W4 [SUMMARY] - Recursia

in hive-145157 •  2 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. Аналогічне воно тим, що ми друкуємо символ, а потім спускаємося в рекурсію. А для оберненого друку спускаємся рекурсію, а потім по поверненню виконуємо друк символа.

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

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  
Loading...