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. Вказівники

book
Void, Рекурсія

Тип повернення 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.

question mark

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

Select the correct answer

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

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

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

Секція 5. Розділ 6
Ми дуже хвилюємося, що щось пішло не так. Що трапилося?
some-alt