Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Void, Рекурсія | Функції
Основи C
course content

Зміст курсу

Основи C

Основи C

1. Вступ
2. Дані
3. Оператори
4. Оператори управління
5. Функції
6. Вказівники

bookVoid, Рекурсія

Тип повернення void у C

У мові програмування C функції, які оголошені з певним типом повернення, повинні мати оператор return, що повертає значення, яке відповідає цьому типу. Однак, існують сценарії, коли функція не потребує нічого повертати – можливо, вона просто відображає текст на екрані. Для таких випадків функція повинна бути оголошена з типом void.

c

Main

copy
12345678910111213
#include <stdio.h> void func() { printf("This function returns nothing\n"); } int main() { func(); return 0; }

Ключове слово void вказує, що функція не повертає значення, і воно також може використовуватися в контексті вказівників. Спроба оголосити змінну типу void призведе до помилки, оскільки компілятор не зрозуміє, скільки пам'яті виділити.

Ось навмисна помилка для ілюстрації.

c

Main

copy
12345678
#include <stdio.h> int main() { void variable; return 0; }

Заглиблення в рекурсію

C підтримує можливість функції викликати саму себе, техніку, відому як рекурсія.

Уявіть рекурсію як дію розтягування, а потім відпускання гумової стрічки. Її часто використовують у математичних операціях, таких як обчислення факторіалів.

Наприклад: 3! = 3 x 2 x 1

Факторіали часто використовуються для наближення значень функцій шляхом розкладання цих функцій у ряд Тейлора або Маклорена.

Примітка

Натхнення для цього розділу прийшло одразу після того, як автор завершив лабораторну роботу в університеті. Завданням було наблизити значення котангенса до певної точності шляхом розкладання його в ряд Тейлора. І, звичайно, обчислення факторіала було незамінним.

c

Main

copy
1234567891011121314151617181920
#include <stdio.h> int factorial(int n) { // if n = 0 or 1, because 0! = 1 and 1! = 1 if (n == 0 || n == 1) return 1; // recursion case else return n * factorial(n - 1); } int main() { int n = 3; printf("factorial(%d) = %d\n", n, factorial(n)); return 0; }

У контексті рекурсії функція продовжуватиме викликати саму себе, поки не зустріне умову n == 0 || n == 1. Як тільки ця умова буде виконана, результати з наступних викликів функції factorial() повертаються у зворотному порядку, подібно до складання акордеону. До моменту, коли досягнуто кроку 6, початковий виклик factorial(3) поверне 6.

Уявіть рекламу, де ви бачите дівчину, яка тримає пляшку молока. На цій пляшці є ще одне зображення тієї ж дівчини, яка тримає пляшку молока, і на цій меншій пляшці є ще одне зображення дівчини, і так далі. Як називається ця концепція?

Уявіть рекламу, де ви бачите дівчину, яка тримає пляшку молока. На цій пляшці є ще одне зображення тієї ж дівчини, яка тримає пляшку молока, і на цій меншій пляшці є ще одне зображення дівчини, і так далі. Як називається ця концепція?

Виберіть правильну відповідь

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 5. Розділ 6
some-alt