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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2010, 11:11   #1
rasals
Новичок
Джуниор
 
Регистрация: 14.09.2010
Сообщений: 1
По умолчанию Рекурсия

Помогите пожалуйста решить задачку с рекурсией:

Задача: Описать рекурсивную функцию, которая определяет наибольшее число в массиве.
rasals вне форума Ответить с цитированием
Старый 14.09.2010, 11:44   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

ок. Покажи как пробовал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.09.2010, 12:39   #3
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Код:
    p3([],N,N).
    p3([H|T],N,NN):-
        H>N,p3(T,H,NN).
    p3([_|T],N,NN):-
        p3(T,N,NN).
rrrFer вне форума Ответить с цитированием
Старый 14.09.2010, 17:57   #4
~~~
Заблокирован
 
Регистрация: 13.09.2010
Сообщений: 16
По умолчанию

самое примитивное решение

Код:
#include <iostream>

using namespace std;

int max(int n, int* a)
{
        if (n == 1) return a[0];
        if (a[n - 1] > max (n - 1, a)) return a[n - 1];
        return max(n - 1, a);
}

int main()
{
        int n;
        int a[100];
        cin >> n;
        for (int i = 0; i < n; i++)
                cin >> a[i];
        cout << endl << max(n, a);
        system("pause");
        return 0;
}
~~~ вне форума Ответить с цитированием
Старый 14.09.2010, 18:32   #5
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

~~~
Язык не был указан, мое решение для пролога
возможно чтобы не вычислять 4 раза n-1 стоит вычислить его 1 раз и сохранить где-то результат?
аналогично с вызовом функции max(...)
Код:
int max(int n, int* a)
{
		int i=n-1;
        if (!i) return a[0];
		int t=max (i, a);
		return a[i] > t?a[i]:t;
}
---------
почему то не получается выделить "~~~" жирным

Последний раз редактировалось rrrFer; 14.09.2010 в 18:33. Причина: выделил жирным
rrrFer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рекурсия DrDre Паскаль, Turbo Pascal, PascalABC.NET 0 25.08.2010 21:50
рекурсия shelest Помощь студентам 3 14.04.2010 10:12
рекурсия qwerty98765 Помощь студентам 1 10.04.2010 15:22
рекурсия misha25525 Помощь студентам 4 25.03.2010 18:57