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

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

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

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

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

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

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

Можно попробовать использовать массив для памяти. Т.е. пишем сначала 5, потом 4 и 6 и т.д. Потом, естественно, этот массив выводится в конце, но это самое легкое. Самое тяжелое будет настроить номера тех элементов массива откуда будет читаться элемент и куда будет записвыаться.
Cuprum5 вне форума Ответить с цитированием
Старый 16.05.2017, 11:30   #13
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 729
По умолчанию

Копию числа - хорошая идея! Только вот можно сразу отнимать и прибавлять.
Cuprum5 вне форума Ответить с цитированием
Старый 16.05.2017, 11:32   #14
dima.karpov
Пользователь
 
Регистрация: 20.11.2016
Сообщений: 51
По умолчанию

Цитата:
Сообщение от Cuprum5 Посмотреть сообщение
Можно попробовать использовать массив для памяти. Т.е. пишем сначала 5, потом 4 и 6 и т.д. Потом, естественно, этот массив выводится в конце, но это самое легкое. Самое тяжелое будет настроить номера тех элементов массива откуда будет читаться элемент и куда будет записвыаться.
может, ф-ции вызывать не в ф-ции, а в мейне в цикле, чтобы по очереди получилось?
dima.karpov вне форума Ответить с цитированием
Старый 16.05.2017, 11:37   #15
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 729
По умолчанию

Цикл - хорошо, но запоминать как-то надо.
Я хочу сделать через массив, но он загубит рекурсию. Рекурсия - это обязательное условие?
Cuprum5 вне форума Ответить с цитированием
Старый 16.05.2017, 11:38   #16
dima.karpov
Пользователь
 
Регистрация: 20.11.2016
Сообщений: 51
По умолчанию

Цитата:
Сообщение от Cuprum5 Посмотреть сообщение
Цикл - хорошо, но запоминать как-то надо.
Я хочу сделать через массив, но он загубит рекурсию. Рекурсия - это обязательное условие?
нет, рекурсия - НЕ обязательное.
dima.karpov вне форума Ответить с цитированием
Старый 16.05.2017, 11:42   #17
dima.karpov
Пользователь
 
Регистрация: 20.11.2016
Сообщений: 51
По умолчанию

Цитата:
Сообщение от Cuprum5 Посмотреть сообщение
Цикл - хорошо, но запоминать как-то надо.
Я хочу сделать через массив, но он загубит рекурсию. Рекурсия - это обязательное условие?
вот, что имею:
Код:


#include "stdafx.h"
#include <math.h>
#include <iostream>
#include <iomanip>
using namespace std;

int flag = 0;
int funPlus(int a);

int funMinus(int a)
{
	a--;
	cout <<"Минус: " << a << endl;
	return a;
}

int funPlus(int a)
{
	a++;
	cout << "Плюс: " << a << endl;
	return a;
}

int main()
{

	int a = 5;
	int a1 = a, a2 = a;
	cout << "основа: " << a << endl;


	for (int i = 0; i<3; i++)
	{
		a1 = funMinus(a1);
		a2 = funPlus(a2);
	}


	system ("pause"); 
	return 0;
}
в кружочке то, что выводит
Изображения
Тип файла: jpg 333.jpg (52.3 Кб, 119 просмотров)
dima.karpov вне форума Ответить с цитированием
Старый 16.05.2017, 11:53   #18
dima.karpov
Пользователь
 
Регистрация: 20.11.2016
Сообщений: 51
По умолчанию

не, у меня бред(
dima.karpov вне форума Ответить с цитированием
Старый 16.05.2017, 11:54   #19
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 729
По умолчанию

Уа-ха-ха-ха-ха!!!!! Получилось!!!!!
Код:
//Example program
#include <iostream>
#include <string>
#include <vcl>
#include <conio>
#include <math>
using namespace std;

int main()
{
int Massiv[15], f, startindex = 0, endindex = 1, numberofdigits, z;
Massiv[0] = 5;

for(f = 0; f < 3; f++)
{
    numberofdigits = pow(2, f);
    z = 0;
    while(z < numberofdigits)
    {
        Massiv[endindex++] = Massiv[startindex]-1;
        Massiv[endindex++] = Massiv[startindex]+1;
        z++;
        startindex++;
    }
}

for(f = 0; f < 15; f++)
    cout << "n = " << Massiv[f] << "\n";

getch();
return 0;
}
Cuprum5 вне форума Ответить с цитированием
Старый 16.05.2017, 11:55   #20
dima.karpov
Пользователь
 
Регистрация: 20.11.2016
Сообщений: 51
По умолчанию

дошло, нужно гуглить в сторону хранения двоичного дерева
dima.karpov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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