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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.77
stolyars
10 / 10 / 1
Регистрация: 24.12.2008
Сообщений: 32
#1

Написать рекурсивную функцию, проверяющую, является ли массив симметричным - C++

17.02.2009, 07:48. Просмотров 2765. Ответов 4
Метки нет (Все метки)

На занятиях дошли до рекурсии.Кажется мне что я не совсем понял рекурсивные функциию.Дали домашнее задание
1.Написать функцию, которая рекурсивно вычисляет сумму чисел в заданном диапазоне.
2.Написать рекурсивную функцию,которая проверяет является ли массив симметричным

мое решение первой задачи
C++
1
2
3
4
5
6
7
8
9
int summ_recurs(int x,int y)
{ 
int counter=x-1;
counter++;
if(counter==y)
    return x;
    if(counter!=y)
    return x+summ_recurs(x+1,y);
}
Вопрос-это рекурсивно получилось?
Со второй задачей что то не могу понять...
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
int main()
{
    setlocale(0,"");
    srand(time(NULL));
    const int size=10;
    int mass[size],x,y,z,d;
    x=(size/2);
    y=0;
    z=size;
    for(int i=0;i<size;i++)
    {
        mass[i]=rand()%size;
        cout<<"["<<i<<"]"<<"\t"<<mass[i]<<endl;
    }
    d=mass_recurs(mass,size,x,y,z);
    if(d==1)
    {
        cout<<"Массив симметричен"<<endl;
    }
    
 
    system("pause");
}
template<typename X>  X mass_recurs(X mass[],const int size,int x,int y,int z)
{
  if(y<x-1||z>=x)
  {
 
  if(mass[y]!=mass[z])
  {
      return mass_recurs(mass,size,x,y+1,z-1);
  }
   if(mass[y]==mass[z])
  {
     return 1;
    
      
  }
  }
 
 
}
понимаю что рекурсия это вызов функции самой себя с новыми параметрами но чет со второй задачей не разберусь...Растолкуйте пожалуйста по второй задаче на словах хотя бы...Очень хочу разобраться с рекурсией на данном примере...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2009, 07:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Написать рекурсивную функцию, проверяющую, является ли массив симметричным (C++):

Указатели: написать функцию, проверяющую, является ли массив В подмножеством массива А - C++
Задача такая: Написать программу, которая содержит функцию, принимающую в качестве аргумента, указатели на два массива (А и В) и размеры...

Написать рекурсивную функцию, проверяющую правильность расстановки круглых скобок в строке - C++
Написать рекурсивную функцию, проверяющую правильность расстановки круглых скобок в данной строке.

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

Написать рекурсивную функцию, проверяющую, входит или не входит элемент Е в не пустой список L, состоящий из вещественных чисел - C++
Помогите решить задачу, очень нужно Написать программу в которой объявить рекурсивную функцию, проверяющую, входит или не входит...

Написать рекурсивную функцию, которая определяет, является ли число числом Фибоначчи - C++
Microsoft Visual C++ Написать рекурсивную функцию которая определяет, является ли число, числом Фибоначи. нужно написать программу на...

Написать рекурсивную функцию, определяющую, является ли заданное натуральное число простым - C++
Помогите сделать это задание.... Написать рекурсивную функцию, определяющую, является ли заданное натуральное число простым.

4
Humanitis
172 / 164 / 6
Регистрация: 12.01.2009
Сообщений: 430
17.02.2009, 10:28 #2
Рекурсивно,только много лишнего
C++
1
2
3
4
int summ_recurs(int x,int y)
{ 
    return x+(x==y?0:summ_recurs(x+1,y));
}
C++
1
2
3
4
5
6
7
8
9
template<typename X>  bool mass_recurs(X mass[],int first,int last)
{
  if(first>last)
  return mass[first]==mass[last];
 
  return mass[first]==mass[last]&&mass_recurs(mass,first+1,last-1);
 
 
}
возвращает истину если симметричный и ложь в противном случае
first и last соответственно индексы первого и последнего элемента массива
1
stolyars
10 / 10 / 1
Регистрация: 24.12.2008
Сообщений: 32
17.02.2009, 19:20  [ТС] #3
Humanitis спасибо за подсказку и готовое решение,но вопрос не в том что я хочу чтоб за меня решили задачу,а в том чтоб растолковали как это сделать можно простым человеческим языком....на занятиях думал все понятно,оказалось что не понял ничего...
Что вот эта строка делает?x==y?0:
0
Бартимеус
181 / 33 / 2
Регистрация: 29.10.2008
Сообщений: 283
17.02.2009, 19:33 #4
если x равен y то вернуть 0 иначе вернуть summ_recurs(x+1,y)
1
Rajd
44 / 22 / 1
Регистрация: 20.11.2008
Сообщений: 178
18.02.2009, 05:35 #5
C++
1
2
3
4
5
6
7
8
9
template<typename X>  bool mass_recurs(X mass[],int first,int last)
{
  if(first>last)
  return mass[first]==mass[last];
 
  return mass[first]==mass[last]&&mass_recurs(mass,first+1,last-1);
 
 
}
А этот код, разве, завершит свое выполнение?(нормально, а не достигнув границ целого)%)



Приношу свои извинения, просто воспринял код как полную конструкцию условия.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.02.2009, 05:35
Привет! Вот еще темы с ответами:

Написать рекурсивную функцию, определяющую, является ли симметричной указанная часть заданной строки - C++
Необходимо написать рекурсивную функцию, определяющую, является ли симметричной часть строки s, начиная с i-го элемента и кончая j-м. ...

Нужно написать рекурсивную функцию, которая определит - является ли симметричной часть строки от n, до z - C++
Нужно написать рекурсивную функцию, которая определит - является ли симметричной часть строки от n, до z. Выдает ошибку: #include...

В целочисленном массиве найти и напечатать те элементы, которые являются степенью 2. Написать функцию, проверяющую, является ли число степенью 2. - C++
В целочисленном массиве найти и напечатать те элементы, которые являются степенью 2. Написать функцию, проверяющую, является ли число...

Определить, является ли массив симметричным? - C++
Символьный тип данных Введите массив символов из 7 элементов. Определите, является ли он симметричным (Симметричным считается массив,...


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

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
18.02.2009, 05:35
Ответ Создать тему
Опции темы

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