Форум программистов, компьютерный форум CyberForum.ru

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

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

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

09.10.2009, 00:46. Просмотров 958. Ответов 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");
        
    
    
}
Всё работает,но вот программа закрывается (.В чем может быть причина ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2009, 00:46     Эээ... рекурсия?(
Посмотрите здесь:

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

рекурсия - C++
Всем доброго времени суток. Есть рекурсивная функция выводящая числа от 15 до 10 по убыванию, как сделать чтоб выводило эти же числа но...

Рекурсия - C++
Задан массив целых чисел: а0, а1 ..., аn-1. Известно, что один из элементов массива принимает нулевое значение. Найти номер данного...

Рекурсия - C++
Здравствуйте, писали на лабораторной программу с использованием рекурсии, о бъясните почему в ответе двойки выдает?? и что рекурсивная...

Рекурсия - C++
Есть функция, в нее передается массив из n элементов. Функция находит минимальный элемент и считает сколько раз он встречается в массиве,...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
skvor
640KB мне хватило на всё.
118 / 49 / 2
Регистрация: 07.06.2009
Сообщений: 442
09.10.2009, 00:52     Эээ... рекурсия?( #2
Мозги кончаются, вот и "закрывается"
Попытайтесь на бумажке её прогнать, пальчиком
Deniska
4 / 4 / 0
Регистрация: 15.04.2009
Сообщений: 29
09.10.2009, 00:53     Эээ... рекурсия?( #3
Может переменная z выходит за рамки?
EnzoMatrix
120 / 120 / 5
Регистрация: 14.03.2009
Сообщений: 462
09.10.2009, 00:53     Эээ... рекурсия?( #4
ну дык, у тебя тут выход из рекурсии совсем не предусмотрен
Welemir
3 / 3 / 0
Регистрация: 26.09.2009
Сообщений: 104
09.10.2009, 00:58  [ТС]     Эээ... рекурсия?( #5
Эээ...а как его сделать ? В рекурсии я пень колода),вот и спрашиваю)).Собсно,в учебнике только примеры.
skvor
640KB мне хватило на всё.
118 / 49 / 2
Регистрация: 07.06.2009
Сообщений: 442
09.10.2009, 01:04     Эээ... рекурсия?( #6
Цитата Сообщение от Welemir Посмотреть сообщение
В рекурсии я пень колода
Ну, тогда, наверное, в итерации соображаете, вот и попробуйте сделать без рекурсии.
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
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 {
 //Основной код функции 
 }
}
В общем, можно долго продолжать. Суть ты уловил: функция должна сама себя вызывать не безусловно, а по некоторому условию.
Тема сложная довольно. Упирайся.
xBot01
9 / 9 / 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() является рекурсивной.
Она вызывает сама себя пока не дойдет до основного случая.
TanT
эволюционирую потихоньку
465 / 463 / 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, а у вас всё таки факториал считается
хотя не суть
xBot01
9 / 9 / 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, а у вас всё таки факториал считается
хотя не суть
Извиняюсь за ошибку. Ночь не спал. =)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.10.2009, 14:45     Эээ... рекурсия?(
Еще ссылки по теме:

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

Рекурсия - C++
Привет, помогите пожалуйста надо вычислить рекурсивную функцию : (x+a(x+(a-1)(x+(a-2)(x+...2(x+1)^2)^2)^2)^2)^2. Помогите пожалуйста ,...

рекурсия на с - C++
разработать рекурсивную функцию для вычитания двух подлинных двоичных чисел, заданных в виде символьных строк. разрядность цифр может быть...

Рекурсия - C++
Помогите пожалуйста составить программу, с помощью рекурсии: Определить значение отношения максимального и минимального из...


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

Или воспользуйтесь поиском по форуму:
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,233
Завершенные тесты: 1
09.10.2009, 14:45     Эээ... рекурсия?( #11
Welemir, 1-ое,где return?
2-ое, если будет тоже самое, функцию паузы напиши в другой функции
Yandex
Объявления
09.10.2009, 14:45     Эээ... рекурсия?(
Ответ Создать тему
Опции темы

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