Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
1 / 1 / 0
Регистрация: 20.11.2009
Сообщений: 21

Объясните рекурсию

23.01.2010, 16:32. Показов 1385. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не случайно в заголовке "Объясните".
Тут очень много тредов на эту тему, но все о конкретном примере.

Так получилось, что до конца не понимаю что это такое.
Определение я знаю - функция, которая вызывает саму себя или другую функцию, которая потом вызывает первую.

Проблема в том что из этого у меня в голове рисуется бесконечный цикл типа

C
1
2
3
int a () {
       a();
}
и
C
1
2
3
4
5
6
7
int a () {
       b();
}
 
int b(){
      a();
}
Может кто-нибудь пожалуйста привести примеры обоих типов рекурсии, чтобы простые в понимании и грамотных в исполнении? Заранее благодарю )
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.01.2010, 16:32
Ответы с готовыми решениями:

Задача на рекурсию
Пусть X1=Y1=1, Xi=Xi-1+Yi-1/i*i , Yi=Yi-1+Xi-1/i , i=2,3…. Получить Xn, Yn Не знаю как вернуть значения Х и У с помощью структуры. ...

Задача на рекурсию
Подсчитать выражение с помощью рекурсии:

Объясните рекурсию
Надеюсь я правильно хоть что-то написал. Не понимаю какая точка выхода нужна #include <iostream> using namespace std;...

9
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
23.01.2010, 17:53
То что ты написал дает бесконечный цикл.
На самом деле из-за ограниченности размера стека конечно этот цикл закончится ошибкой выполнения.

Но вот например рекурсивная функция.
C
1
2
3
4
5
6
int func_a( int n ) {
 
if ( n<=0 ) { return 0; }
return 1+func_a( n-1 );
 
} // func_a()
// вызов
int d= func_a( 5 );
1
425 / 229 / 87
Регистрация: 25.03.2009
Сообщений: 744
23.01.2010, 18:04
soulofdarkness, то есть по сути мы пишем условие окончания рекурсии чтобы не закончить выполнение проги раньше задуманного
1
1 / 1 / 0
Регистрация: 23.01.2010
Сообщений: 3
23.01.2010, 18:09
Простите я дельфер, но стандартным примером рекурсии является ряд Фибоначчи, в котором, если кто не знает, следующее число является суммой предыдущих. Для вычисления чисел этого ряда можно юзать рекурсию:

Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure Fibonacci ( num : integer, var outnum : integer );
var
  i : integer;
begin
  Fibonacci(1) := 1;
  Fibonacci(2) := 2;
  for i := 1 to n do
    begin
      Fibonacci(i) := Fibonacci(i-1) + Fibonacci(i-2);
      outnum := Fibonacci(i);
    end;
1
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
23.01.2010, 18:18
soulofdarkness,

Объясните рекурсию

рекурсия

далее перейти по ссылке "Возможно вы имели в виду..."
1
425 / 229 / 87
Регистрация: 25.03.2009
Сообщений: 744
23.01.2010, 19:16
Rififi, вот и получилась рекурсия
1
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
24.01.2010, 10:31
2Rififi: это не объяснение - пример такой рекурсии еще в посте #1
0
1 / 1 / 0
Регистрация: 20.11.2009
Сообщений: 21
26.01.2010, 18:41  [ТС]
Т.е. рекурсия - цикл с условием выхода?
0
 Аватар для HIMen
4340 / 1509 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
26.01.2010, 18:56
рекурсия - когда функция вызывает сама себя. Чтобы она не делала это бесконечно долго нужно условие выхода
1
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
26.01.2010, 19:45
Цитата Сообщение от soulofdarkness Посмотреть сообщение
Т.е. рекурсия - цикл с условием выхода?
без условия выхода это тоже рекурсия. Но если этот цикл без условия выхода, то он как правило бесполезен.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.01.2010, 19:45
Помогаю со студенческими работами здесь

Объясните рекурсию
Допустим простая задача на ханойские башни. Головоломка “Ханойские башни” состоит из трех стержней, пронумерованных числами 1, 2, 3....

Ребята, объясните пожалуйста эту рекурсию!
Ребята, ну хоть убейся не могу понять эту рекурсивную фунцию для задачи с Ханойской башней! Всё работает отлично, но вот как! Кто может,...

Переделать рекурсию по аргументу в рекурсию по значению
эта рекурсия по аргументу, заменяющая Y на число, равное глубине вложения Y в список List, например, Y=A, List=((A B)A(C(A(A D)))) -&gt;...

Задача на рекурсию
помогите написать пожалуйста программу на с++ по теме рекурсия. Задано действительное A, найти среди чисел 1; 1+1/2; 1+1/2+1/3;.... ...

Задача на рекурсию
Всем доброго времени суток. Прошу подсказать мне условие задачи на рекурсию(нам дали задание самим придумать себе задание и выполнить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru