Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1 / 1 / 0
Регистрация: 10.02.2016
Сообщений: 43
1

Разобраться с рекурсией: stack overflow

01.04.2016, 13:02. Просмотров 1036. Ответов 4
Метки нет (Все метки)

36.pdf
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
#include<iostream>
#include<vector>
#include<string>
#include<math.h>
#include<cmath>
#include<algorithm>
using namespace std;
void ruda(double  n,int baza)
{    
        if(n>1)
    {
         n = n - 1;
        
    double robot = round(n * 2 / 7);
    double slgod = round(n * 3 / 7);
    baza += round(n * 2 / 7);
    ruda(robot,baza);
    ruda(slgod,baza);
         }
}
int main()
{
    int baza=0;
    double n;
    cin >> n;
    ruda(n,baza);
}
у меня пишет постоянно stack overflow или вообще не считает
Сильно не ругайте за код,я с этой рекурсией не очень знаком
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.04.2016, 13:02
Ответы с готовыми решениями:

Stack overflow
Реализовал структуру данных стек на связном списке, очистку решил возложить на деструкторы узлов,...

Stack overflow.
У меня в программе есть реверсивная функция (много параметров) она вызывает себя очень много раз....

stack overflow
Всем привет. пишу void test() { try { cout &lt;&lt; &quot;test \n&quot;; test(); } catch(exception...

Stack overflow
Написал #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; #include &lt;math.h&gt; #include...

4
Модератор
Эксперт С++
9793 / 8356 / 5089
Регистрация: 18.12.2011
Сообщений: 22,340
01.04.2016, 13:10 2
 Комментарий модератора 
П.5.18.Правил
Запрещено размещать задания и решения в виде картинок и других файлов с их текстом.
П.5.19.Правил
Запрещено создавать темы в виде ссылок на задания или коды программ, расположенные на других сайтах.

yarik2550, Рекурсивная функция при некотором условии должна иметь выход без вызова самой себя.
Иначе - бесконечный цикл и, как следствие, stack overflow
И что Ваша функция возвращает, т.е. какой итог ее работы?
0
159 / 151 / 92
Регистрация: 18.11.2015
Сообщений: 677
01.04.2016, 13:49 3
yarik2550, ты уверен, что эту задачу нужно решать рекурсией?
0
1178 / 695 / 164
Регистрация: 05.12.2015
Сообщений: 2,016
01.04.2016, 13:52 4
meJevin, А почему нет:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
int BaseBuilder(int n)
{
    int modules=0;
    while(n>1) {
        n--;
        int gift=n*2/7;
        int next=n*3/7;
        modules+=n-gift-next;
        modules+=BaseBuilder(gift);
        n=next;
    }
    return modules;
}
 
int main()
{
    int n;
    std::cin>>n;
    std::cout<<BaseBuilder(n)<<std::endl;
}
0
1 / 1 / 0
Регистрация: 10.02.2016
Сообщений: 43
01.04.2016, 13:58  [ТС] 5
Спасибо)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.04.2016, 13:58

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

Почему stack overflow?
Почему приведенный ниже код сразу же приводит к переполнению стека? int _tmain(int argc,...

Непонятный Stack Overflow
Здравствуйте, уважаемые форумчане.Столкнулся с непонятной мне проблемой при решении одной лёгкой...

Переполнение (Stack overflow)
Подскажите, пожалуйста, почему при перемещении int n, a, k; в локальную область программа при...

Stack Overflow, перегруз буфера
Добрый день, знаком с перегрузом буфера в теории, хотел бы перейти к практике. Написал простенькую...


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

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

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