Зміст курсу
Основи C
Основи C
Void, Рекурсія
Тип повернення void у C
У мові програмування C функції, які оголошені з певним типом повернення, повинні мати оператор return, що повертає значення, яке відповідає цьому типу. Однак, існують сценарії, коли функція не потребує нічого повертати – можливо, вона просто відображає текст на екрані. Для таких випадків функція повинна бути оголошена з типом void
.
Main
#include <stdio.h> void func() { printf("This function returns nothing\n"); } int main() { func(); return 0; }
Ключове слово void
вказує, що функція не повертає значення, і воно також може використовуватися в контексті вказівників. Спроба оголосити змінну типу void
призведе до помилки, оскільки компілятор не зрозуміє, скільки пам'яті виділити.
Ось навмисна помилка для ілюстрації.
Main
#include <stdio.h> int main() { void variable; return 0; }
Заглиблення в рекурсію
C підтримує можливість функції викликати саму себе, техніку, відому як рекурсія.
Уявіть рекурсію як дію розтягування, а потім відпускання гумової стрічки. Її часто використовують у математичних операціях, таких як обчислення факторіалів.
Наприклад: 3! = 3 x 2 x 1
Факторіали часто використовуються для наближення значень функцій шляхом розкладання цих функцій у ряд Тейлора або Маклорена.
Примітка
Натхнення для цього розділу прийшло одразу після того, як автор завершив лабораторну роботу в університеті. Завданням було наблизити значення котангенса до певної точності шляхом розкладання його в ряд Тейлора. І, звичайно, обчислення факторіала було незамінним.
Main
#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
.
Дякуємо за ваш відгук!