Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2017, 10:36   #1
dima.karpov
Пользователь
 
Регистрация: 20.11.2016
Сообщений: 51
По умолчанию Рекурсия

допустим, у меня есть число, равное 5.
есть две ф-ции, одна прибавляет, другая вычитает.

хочу реализовать такую "иерархию" как на картинке.
вот фигню реализовал(
Код:
#include "stdafx.h"
#include <math.h>
#include <iostream>
#include <iomanip>
using namespace std;
 
int flag = 0;
void funPlus(int a);
 
void funMinus(int a)
{
    if (flag <= 3)
    {
        flag++;
        a--;
        funMinus(a);
        funPlus(a);
        cout <<"Минус: " << a << endl;
    }
}
 
void funPlus(int a)
{
    if (flag <= 3)
    {
        flag++;
        a++;
        funMinus(a);
        funPlus(a);
        cout << "Плюс: " << a << endl;
    }
}
 
int main()
{
 
    int a = 5;
    cout << "основа: " << a << endl;
    funMinus(a);
    funPlus(a);
 
 
    system ("pause"); 
    return 0;
}
flag для того, что когда-нибудь рекурсия прекратилась, но результат не очень.
Изображения
Тип файла: jpg 123.jpg (24.8 Кб, 86 просмотров)
Тип файла: jpg 222.jpg (8.6 Кб, 83 просмотров)
dima.karpov вне форума Ответить с цитированием
Старый 16.05.2017, 10:43   #2
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 734
По умолчанию

Цитата:
Сообщение от dima.karpov Посмотреть сообщение
Код:
if (flag <= 3)
- зачем Вам только 4 результата? Остальные результаты не нужны.
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
Cuprum5 вне форума Ответить с цитированием
Старый 16.05.2017, 10:45   #3
dima.karpov
Пользователь
 
Регистрация: 20.11.2016
Сообщений: 51
По умолчанию

Цитата:
Сообщение от Cuprum5 Посмотреть сообщение
- зачем Вам только 4 результата? Остальные результаты не нужны.
нужны. это чтобы до бесконечности не зациклилось, просто и так неправильно выводит. тут хотя бы для начала до трех сойдет
dima.karpov вне форума Ответить с цитированием
Старый 16.05.2017, 10:49   #4
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 734
По умолчанию

А как оно должно выводиться? Так?
5
4
6
3
5
5
7
2
4
4
6
4
6
6
8
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
Cuprum5 вне форума Ответить с цитированием
Старый 16.05.2017, 10:52   #5
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 734
По умолчанию

1 функцию можно использовать вместо 2?
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
Cuprum5 вне форума Ответить с цитированием
Старый 16.05.2017, 10:55   #6
dima.karpov
Пользователь
 
Регистрация: 20.11.2016
Сообщений: 51
По умолчанию

Цитата:
Сообщение от Cuprum5 Посмотреть сообщение
А как оно должно выводиться? Так?
5
4
6
3
5
5
7
2
4
4
6
4
6
6
8
да.

Цитата:
Сообщение от Cuprum5 Посмотреть сообщение
1 функцию можно использовать вместо 2?
хм.. а как это будет выглядеть? мне просто не приходило в голову..
dima.karpov вне форума Ответить с цитированием
Старый 16.05.2017, 10:56   #7
dima.karpov
Пользователь
 
Регистрация: 20.11.2016
Сообщений: 51
По умолчанию

Цитата:
Сообщение от Cuprum5 Посмотреть сообщение
1 функцию можно использовать вместо 2?
лучше, конечно, две функции
dima.karpov вне форума Ответить с цитированием
Старый 16.05.2017, 11:09   #8
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 734
По умолчанию

Может объекты здесь применить?
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
Cuprum5 вне форума Ответить с цитированием
Старый 16.05.2017, 11:16   #9
dima.karpov
Пользователь
 
Регистрация: 20.11.2016
Сообщений: 51
По умолчанию

Цитата:
Сообщение от Cuprum5 Посмотреть сообщение
Может объекты здесь применить?
не, без ооп.
возможно ли вообще одновременно две ф-ции вызывать?
dima.karpov вне форума Ответить с цитированием
Старый 16.05.2017, 11:24   #10
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 734
По умолчанию

Ну вообще-то нет, они всегда вызываются последовательно. Проблема в том, что Вам во 2 строке нужно, чтобы 4 и 6 последовательно писались, а по рекурсии функция заходит вниз, а не вбок.
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
Cuprum5 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рекурсия Надежда1286 Помощь студентам 3 27.11.2011 14:06
Рекурсия Solnze2 Паскаль, Turbo Pascal, PascalABC.NET 0 09.06.2010 09:28
Рекурсия Shadows_Behind Помощь студентам 6 26.05.2010 15:07
рекурсия misha25525 Помощь студентам 4 25.03.2010 18:57