Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Welemir
3 / 3 / 0
Регистрация: 26.09.2009
Сообщений: 104
#1

Эээ... рекурсия?( - C++

09.10.2009, 00:46. Просмотров 962. Ответов 10
Метки нет (Все метки)

Всем привет.Пытаемся понять рекурсию ))

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
    int shit(int f) {
        
        int x = 5*f;
        int z = shit(x);
        printf("%d",z);
        
        }
 
 
int main() {
    
    int r;
    r = 8;
    shit(r);
    system("PAUSE");
        
    
    
}
Всё работает,но вот программа закрывается (.В чем может быть причина ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2009, 00:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Эээ... рекурсия?( (C++):

Рекурсия - C++
Есть задача, написал решение но ответ неправильный. Задача: Решение: #include &lt;iostream&gt; using namespace std; int a, n, m, t,...

Рекурсия - C++
Сделайте одну програмку используя рекурсию. Очень нужно... Срочно. 1. Реализовать поиск НОД; 2. Возвести число в целую степень; ...

Рекурсия - C++
Вот какой самый простой пример рекурсии я обнаружил в интернете: #include &lt;iostream&gt; using namespace std; int factorial(int n) { ...

Рекурсия - C++
Доброго времени суток! (Рекурсия). Вычислить сумму: Заранее спасибо!

Рекурсия!!!! - C++
Доброго времени суток!!! В С++ полный нуб.... маюсь не первый день с такой задачкой: Напишите рекурсивную подпрограмму вычисления...

Рекурсия - C++
Сегодня баловался с рекурсией. получилось типа цикла, только из функции #include &lt;iostream&gt; using namespace std; unsigned...

10
skvor
640KB мне хватило на всё.
118 / 49 / 2
Регистрация: 07.06.2009
Сообщений: 442
09.10.2009, 00:52 #2
Мозги кончаются, вот и "закрывается"
Попытайтесь на бумажке её прогнать, пальчиком
0
Deniska
4 / 4 / 0
Регистрация: 15.04.2009
Сообщений: 29
09.10.2009, 00:53 #3
Может переменная z выходит за рамки?
0
EnzoMatrix
120 / 120 / 5
Регистрация: 14.03.2009
Сообщений: 462
09.10.2009, 00:53 #4
ну дык, у тебя тут выход из рекурсии совсем не предусмотрен
0
Welemir
3 / 3 / 0
Регистрация: 26.09.2009
Сообщений: 104
09.10.2009, 00:58  [ТС] #5
Эээ...а как его сделать ? В рекурсии я пень колода),вот и спрашиваю)).Собсно,в учебнике только примеры.
0
skvor
640KB мне хватило на всё.
118 / 49 / 2
Регистрация: 07.06.2009
Сообщений: 442
09.10.2009, 01:04 #6
Цитата Сообщение от Welemir Посмотреть сообщение
В рекурсии я пень колода
Ну, тогда, наверное, в итерации соображаете, вот и попробуйте сделать без рекурсии.
1
kravam
быдлокодер
1702 / 889 / 45
Регистрация: 04.06.2008
Сообщений: 5,498
09.10.2009, 02:06 #7
Схема рекурсивных функций

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
funktsia () {
 if (//Некотрое условие) {
  funktsia ()
 }
 //Основной код функции 
}
 
Варианты: 
funktsia () {
 for (//Некотрое условие) {
  funktsia ()
 }
 //Основной код функции 
}
 
funktsia () {
  while (//Некотрое условие) {
   funktsia ()
 }
 //Основной код функции 
}
 
funktsia () {
 if (//Некотрое условие) {
  funktsia ()
 }
 else {
  for (//Некотрое условие) {
    funktsia ()
  }   
 }
   //Основной код функции 
}
 
funktsia () {
 if (//Некотрое условие) {
  funktsia ()
 }
 else {
 //Основной код функции 
 }
}
В общем, можно долго продолжать. Суть ты уловил: функция должна сама себя вызывать не безусловно, а по некоторому условию.
Тема сложная довольно. Упирайся.
0
xBot01
10 / 10 / 1
Регистрация: 25.09.2009
Сообщений: 17
09.10.2009, 06:21 #8
Цитата Сообщение от Х.М.Дейтел/П.Дж.Дейтел
Рекурсивная функция - это функция, которая вызывает саму себя либо непосредственно, либо косвенно( через другую функцию). Для решения задачи вызывается рекурсивная функция. Эта функция в действительности знает только, как решается простейший, так называемый основной случай задачи (или несколько таких случаев). Если рекурсия функции вызывается для решения основного случая, она просто возвращает результат. Если рекурсивная функция вызывается для решения более сложной задачи, она обычно делит задачу на две концептуальные части: одну часть, которую функцию умеет решать, и другую, которую не умеет. Что бы рекурсивное решение было работоспособным, последняя часть должна быть похожа на исходную задачу, но быть по сравнению с ней несколько проще или несколько меньше. Поскольку эта новая задача подобна исходной, функция запускает (вызывает) свой новый экземпляр, который будет работать над меньшей задачей; это называется рекурсивным вызовом или шагом рекурсии.
Пример: вычисление числа фибоначи.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using std::cout;
using std::endl;
 
unsigned long factorial( unsigned long);
 
int main()
{
   cout << "10! = " << factorial( 10 ) << endl;
}
 
unsigned long factorial( unsigned long number )
{
   // Проверить на основной случай
   if( number <= 1 )
      // Основные случаи: ( 0! = 1 ) && ( 1! = 1 ).
      return 1;
   else
      // Рекурсивный шаг
      return number * factorial( number - 1 );
}
Функция factorial() является рекурсивной.
Она вызывает сама себя пока не дойдет до основного случая.
0
TanT
эволюционирую потихоньку
466 / 464 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
09.10.2009, 06:36 #9
Цитата Сообщение от xBot01 Посмотреть сообщение
Пример: вычисление числа фибоначи.
Чи́сла Фибона́ччи — элементы числовой последовательности
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597… (последовательность A000045 в OEIS)
в которой каждое последующее число равно сумме двух предыдущих чисел.

xBot01, а у вас всё таки факториал считается
хотя не суть
1
xBot01
10 / 10 / 1
Регистрация: 25.09.2009
Сообщений: 17
09.10.2009, 06:41 #10
Цитата Сообщение от TanT Посмотреть сообщение
Чи́сла Фибона́ччи — элементы числовой последовательности
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597… (последовательность A000045 в OEIS)
в которой каждое последующее число равно сумме двух предыдущих чисел.

xBot01, а у вас всё таки факториал считается
хотя не суть
Извиняюсь за ошибку. Ночь не спал. =)
0
AnonymC
1173 / 455 / 28
Регистрация: 23.06.2009
Сообщений: 6,341
Завершенные тесты: 1
09.10.2009, 14:45 #11
Welemir, 1-ое,где return?
2-ое, если будет тоже самое, функцию паузы напиши в другой функции
0
09.10.2009, 14:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.10.2009, 14:45
Привет! Вот еще темы с ответами:

Рекурсия - C++
Помогите написать рекурсию. Задание прилагаю

Рекурсия - C++
Есть такой код. В нем рисуется что то вроде линейки. Данный код предназначен для иллюстрации работы рекурсии. Может мне кто нибудь...

Рекурсия - C++
Привет. Только что узнал,что такое рекурсия и понял как она работает,но написать участок кода с рекурсией мозгов не хватает. Нужно...

рекурсия - C++
Доброго времени суток. Уважаемые ГУРУ, есть одна проблема. Ниже представлен код, в котором параметр b должен быть всегда...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru