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

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

Войти
Регистрация
Восстановить пароль
 
Valli1
4 / 4 / 0
Регистрация: 14.09.2012
Сообщений: 64
#1

Рекурсия - C++

09.02.2013, 21:45. Просмотров 327. Ответов 2
Метки нет (Все метки)

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
#include "stdafx.h"
#include <iostream>
const int n=4;
void swap(int &x,int &x1);
void pt(int* a1,int n1,int z);
int main()
{int a[n]={1,2,3,4};
pt(a,n,23);
system("pause");
return 0;}
void swap(int &x,int &x1,int z){
 
int t=x;
x=x1;
x1=t;}
void pt(int* a1,int n1,int z){
if(z>0){
int j=n1-2;
while(j!=-1&&a1[j]>a1[j+1])j--;
int k=n1-1;
while(a1[j]>a1[k])k--;
swap(a1[j],a1[k]);
int l = j + 1, r = n1 - 1;
while (l<r)
swap(a1[l++],a1[r--]);
pt(a1,n1,z-1);}
for(int i=0;i<4;i++)
std::cout<<a1[i]<<' ';
std::cout<<'\n';
}
Генерация перестановки в лексикографическом порядке. Выдает ошибку:
Ошибка 1error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl swap(int &,int &)" (?swap@@YAXAAH0@Z) в функции "void __cdecl pt(int *,int,int)" (?pt@@YAXPAHHH@Z) Perestanovka.obj
Это как понимать, что нельзя использовать ф-цию swap? Тут можно конечно и в цикле внутри main прокрутить(тогда работает), но хотелось именно рекурсию использовать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2013, 21:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Рекурсия (C++):

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

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

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

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

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

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

2
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
09.02.2013, 21:56 #2
Код
void swap(int &x,int &x1);
2 аргумента
Код
void swap(int &x,int &x1,int z)
{ 
    int t = x;
    x = x1;
    x1 = t;
}
3 аргумента

Возможно проблема в этом. Пытаетесь вызвать функцию, к которой есть только заголовок.
1
Valli1
4 / 4 / 0
Регистрация: 14.09.2012
Сообщений: 64
09.02.2013, 22:43  [ТС] #3
Да в этом, но не только, в результате выводит 23 штуки: 4321.

Добавлено через 5 минут
Все цикл нужно было перед
C++
1
pt(a1,n1,z-1);
Просто z там где вы исправили по ошибке не в ту ф-цию вставил.

Добавлено через 34 минуты
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
#include "stdafx.h"
#include <iostream>
const int n=4;
void swap(int &x,int &x1);
void pt(int* a1,int n1,int z);
int main()
{int a[n]={1,2,3,4};
pt(a,n,23);
system("pause");
return 0;}
void swap(int &x,int &x1){
 
int t=x;
x=x1;
x1=t;}
void pt(int* a1,int n1,int z){
int j=n1-2;
while(j!=-1&&a1[j]>a1[j+1])j--;
int k=n1-1;
while(a1[j]>a1[k])k--;
swap(a1[j],a1[k]);
int l = j + 1, r = n1 - 1;
while (l<r)
swap(a1[l++],a1[r--]);
for(int i=0;i<4;i++)
std::cout<<a1[i]<<' ';
std::cout<<'\n';
if(z>1){
pt(a1,n1,z-1);}
 
 
}
А, как сделать, чтобы выводилось как из стека, что то тут не правильно.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2013, 22:43
Привет! Вот еще темы с ответами:

рекурсия - C++
Сделать рекурсию, кроме факториала!

Рекурсия - C++
Вопрос не по коду. Вот есть у меня рекурсивная функция, глубина рекурсии достигает 10 в среднем. Эта функция вызывается огромное (порядка...

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

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


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

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

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