Рекурсивная функция C: примеры и советы
Рекурсивная функция в программировании является функцией, которая вызывает саму себя. Она применяется в различных задачах, особенно там, где требуется повторять определенные действия или решать задачи с подобной структурой данных.
Рассмотрим пример рекурсивной функции на языке программирования C, которая вычисляет факториал числа:
C
#include
int factorial(int n){
// Базовый случай - факториал 0 равен 1
if(n == 0){
return 1;
}
// Рекурсивный случай - вычисляем факториал числа n,
// уменьшая его на 1 при каждой рекурсивной вызове
else{
return n * factorial(n - 1);
}
}
int main(){
int number = 5;
int result = factorial(number);
printf("Факториал числа %d равен %d", number, result);
return 0;
}
В этом примере функция `factorial` вызывает саму себя с аргументом `n - 1`, пока `n` не станет равным 0. Когда `n` равно 0, функция возвращает 1. Затем, рекурсивные вызовы функции `factorial` начинают возвращать результаты, которые умножаются на значения `n`, пока не будет получено окончательное значение факториала.
Существуют и другие примеры использования рекурсивных функций. Например, рекурсивная функция может использоваться для вычисления чисел Фибоначчи или обхода дерева.
C
#include
int fibonacci(int n){
// Базовые случаи - первые два числа равны 1
if(n == 0 || n == 1){
return 1;
}
// Рекурсивный случай - вычисляем число Фибоначчи,
// вызывая функцию с аргументами n-1 и n-2
else{
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
int main(){
int number = 6;
int result = fibonacci(number);
printf("Число Фибоначчи с номером %d равно %d", number, result);
return 0;
}
Этот пример вычисляет число Фибоначчи с заданным номером. Функция `fibonacci` вызывает саму себя с аргументами `n-1` и `n-2`, пока номер не станет равным 0 или 1. Когда номер равен 0 или 1, функция возвращает 1. Затем, рекурсивные вызовы функции `fibonacci` начинают возвращать сумму результатов двух предыдущих вызовов, пока не будет получено значение для заданного номера числа Фибоначчи.