рекурсивная функция



рекурсия в си

Автор Дмитрий задал вопрос в разделе Другие языки и технологии

Рекурсия в C++ объясните на самом простейшем примере для чайника и получил лучший ответ

Ответ от Ѓдачник[гуру]
Рекурсия - это такая процедура, когда очередное значения функции вычисляется через предыдущее значение той же функции. Например, Функция вычисления факториала числа
int fakt( int x) {
if (x == 1) return 1 else return x * fakt (x - 1)
}
Чтобы вычислить факториал х, нужно умножить х на факториал числа х - 1. Значит, сначала нужно вычислить функцию для х - 1, а перед тем для х - 2, и так далее, пока мы не опустимся до 1.
Факториал от 1 задан прямо - он равен 1, адальше функция будет вызывать сама себя и вычислять факториалы 2, 3, и так далее до х.
Но при каждом вызове функции происходит запись адреса функции в стек, поэтому глубина вложений функции в функцию ограничена размером стека.

Ответ от Afm1972 shom3[гуру]
ладно

Ответ от ? ?[гуру]
void a() {
__printf("abc");
__a();
}

Ответ от Fzfx[гуру]
void func() {
func();
}

Ответ от I i[гуру]
рекурсия - это например вызов функции в теле этой же самой функции
пример - функция расчета факториала:
int fact (int a) {
if (a == 1) return 1;
else return fact(a-1)*a;
}

Ответ от Кrab Bark[гуру]
Рекурсия - это вызов функции себя самой с измененными параметрами. Применяется, когда вычисление можно свести к такому же для более простых (обычно меньших) значений. В функции должно быть предусмотрено, когда эти повторные вызовы закончатся (когда, например, значение функции становится уже известным) , поэтому в ней обязательно должен присутствовать условный оператор.
При рекурсивном вычислении часто алгоритм становится намного проще, но реализуется компьютером такой алгоритм намного медленнее из-за необходимости запоминания им множества промежуточных значений.
Классический и простейший пример - вычисление факториала при помощи рекурсии, приведенный выше Михаилом Грудцыном, впрочем, его можно упростить:
long fact(int x){return x?x*fact(x-1):1;}

Ответ от Svoboden kak ni kogda[новичек]
вот один из примеров рекурсии
// Введите_имя. cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h" //служит для генерации файла предкомпилированных заголовков
#include //Заголовочный файл с классами, функциями и переменными для организации ввода-вывода
#include //математическое выражение
using namespace std; // пространство имён
unsigned long int factorial(unsigned long int);// прототип рекурсивной функции
int i = 1; // инициализация глобальной переменной для подсчёта кол-ва рекурсивных вызовов
unsigned long int result; // глобальная переменная для хранения возвращаемого результата рекурсивной функцией
int _tmain(int argc, _TCHAR* argv[]) // cke;bn для поддержки юникода при передаче агрументов в командной строке
{
int n; // локальная переменная для передачи введенного числа с клавиатуры
cout << "Enter n!: "; //стандартные потоки ввода вывода, которые используются при написании программ
cin >> n;
cout << n << "!" << "=" << factorial(n) << endl; // вызов рекурсивной функции
system("pause");
return 0; //выполняет выход из метода и возвращает результат выполнения метода
}
unsigned long int factorial(unsigned long int f) // рекурсивная функция для нахождения n!
{
if (f == 1 || f == 0) // базовое или частное решение
return 0; // все мы знаем, что 1!=1 и 1!=1
cout << "Step\t" << i << endl;
i++; // операция инкремента шага рекурсивных вызовов
cout << "Result= " << result << endl;
result = f * factorial(f - 1); // функция вызывает саму себя, причём её аргумент уже на 1 меньше
return result;
}

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: Рекурсия в C++ объясните на самом простейшем примере для чайника
спросили в Мормонизм
В каком смысле Иисус Христос - Бог, если Его Отец Бог Всемогущий?
Аналогичный вопрос: а как сын человека может быть человеком, если его отец - человек?
Вы
подробнее...
спросили в Рекурсия
Рекурсия(Java2): в чём её смысл и как ей пользоваться?
Рекурсия - неявный цикл прямым или косвенным вызовом функцией самой себя. В функции будет условный
подробнее...

Программирование: метод рекурсивного спуска
там скорее всего выражение со скобками- иначе смысла в рекурсии нет
примерподробнее...
Рекурсивная функция на Википедии
Посмотрите статью на википедии про Рекурсивная функция
Рекурсия на Википедии
Посмотрите статью на википедии про Рекурсия
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*