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

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

Войти
Регистрация
Восстановить пароль
 
Чорний кот
0 / 0 / 0
Регистрация: 09.10.2012
Сообщений: 20
#1

Выполнить задачу с использованием рекурсии - C++

14.12.2013, 11:53. Просмотров 222. Ответов 1
Метки нет (Все метки)

Есть одномерный массив длиной N, заполненный числами от -10 до 10. Найти максимальную сумму, если можно брать следующий элемент, или через один.
Я не могу понять как правильно её организовать
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <conio.h>
using namespace std;
int S(int n, int a[],int rez){
    cout << n << endl;
    if (a[n]>a[n - 1]){ rez = a[n] + S((n - 1), a,rez); }
    else rez = a[n] + S((n - 2),a,rez);
    cout << "summa: " << rez << endl;
    if (n == 0) return rez;
}
 
int main()
{
    int let[11] = { 1, 1, -2, -1, -1, 1, 1, 1, 1, 1 };
    cout << "maximal'na summa:" << S(3, let, 0) << endl;
    system("PAUSE");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2013, 11:53     Выполнить задачу с использованием рекурсии
Посмотрите здесь:

Решить задачу с использованием рекурсии C++
Алгоритм Евклида с использованием рекурсии C++
C++ Задание... о золотой горе с использованием рекурсии
C++ С Использованием рекурсии!
C++ Как выполнить данную задачу на с++ ?
C++ Сортировка с использованием рекурсии
решение задач с использованием рекурсии C++
C++ выполнить задачу табулирования
Решение уравнения методом бисекции с использованием рекурсии C++
C++ Вычисление заданной функции разложением ее в ряд с использованием рекурсии
C++ Вычислении функции разложением ее в ряд с использованием рекурсии

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Doksim
 Аватар для Doksim
57 / 57 / 8
Регистрация: 08.12.2013
Сообщений: 257
14.12.2013, 12:02     Выполнить задачу с использованием рекурсии #2
так по идее

C++
1
2
3
4
5
6
7
8
9
10
11
12
int f( int m[], int n, int i = 0, int sum = 0 )
{
    int a = -20, b = -20;
    if( i + 2 < n )
    a = f( m, n, i + 2, sum + m[ i + 2 ] );
    if( i + 1 < n )
    b = f( m, n, i + 1, sum + m[ i + 1 ] );
    else return sum;
    
    if( a < b )return b;
    else return a;
}
Yandex
Объявления
14.12.2013, 12:02     Выполнить задачу с использованием рекурсии
Ответ Создать тему
Опции темы

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