![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| 4epT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: нет Всего: 3 |
Добрый вечер всем) Программирую на Java уже более 2-х лет, вчера девушка попросила сделать лабу в универе ... задание таково: дан двумерный массив, посчитать сумму его элементов без использования циклов. Подсчет суммы делается через метод класса, класс принимает сам массив. Честно скажу меня этим вопросом просто поставили в тупик ... это вообще возможно сделать ?
|
|||
|
||||
| XoJIoD |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 23.4.2008 Репутация: нет Всего: нет |
вот пример с помощью рекурсии. Только осторожно можно нарватся на StackOverflowError при больших масивах.
Лудше для рекурсии использовать какойнибудь я зык с хвостовой рекурсией например java_script.
|
|||
|
||||
| 4epT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: нет Всего: 3 |
спасибо конечно) через рекурсию я бы написал. по требованию делать с 1 параметром и этот параметр сам массив.
мало того это первый курс института, они прошли только типы данных и операторы ветвления. |
|||
|
||||
| mimik |
|
|||
![]() не Rohoss Я ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 1.11.2010 Репутация: нет Всего: 2 |
||||
|
||||
| 4epT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: нет Всего: 3 |
||||
|
||||
| XoJIoD |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 23.4.2008 Репутация: нет Всего: нет |
Это сообщение отредактировал(а) XoJIoD - 15.2.2011, 23:27 |
|||
|
||||
| mimik |
|
|||
![]() не Rohoss Я ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 1.11.2010 Репутация: нет Всего: 2 |
||||
|
||||
| 4epT |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: нет Всего: 3 |
так и написал))) посмотрим что скажет преподаватель ))) а насчет тупости программы согласен) мало того они должны все писать в main методе, так как они еще не должны знать как писать свои методы. |
||||
|
|||||
| Connie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 382 Регистрация: 12.8.2008 Репутация: 1 Всего: 9 |
4epT, а они именно java изучают, не C++ случаем?
|
|||
|
||||
| 4epT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: нет Всего: 3 |
чисто Java =) |
|||
|
||||
| Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 6 Всего: 93 |
Я так сходу код не напишу, но вот какая мысль на тему рекурсии: а что если сделать метод, который разбивает входной массив на два (или N) меньших массива и вызывает себя же для этих двух массивов. И так пока на входе не окажется массив из одного элемента. Так и рекурсия не слишком глубокой получится. Вопрос лишь в реализации получения части массива без циклов -- не знаю есть ли в Java нужные методы. -------------------- Да. Именно так. |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Развлекся
Но при больших массивах StackOverflowError получаем.
|
|||
|
||||
| Connie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 382 Регистрация: 12.8.2008 Репутация: 1 Всего: 9 |
AntonSaburov, но ведь в функцию должен передаваться один параметр http://forum.vingrad.ru/index.php?showtopi...t&p=2300226
Интересно, а можно использовать статические переменные? Навеяло http://ithappens.ru/story/5286 http://ithappens.ru/story/5325 Сорри, модеры, навеяло Это сообщение отредактировал(а) Connie - 16.2.2011, 19:22 |
|||
|
||||
| Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 8 Всего: 191 |
||||
|
||||
| 4epT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: нет Всего: 3 |
та тут походу только в тупую перебором =) ифанычами)
кстати, кто нибудь знает что такое точное и не точное сравнение чисел ? тип double |
|||
|
||||
| Connie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 382 Регистрация: 12.8.2008 Репутация: 1 Всего: 9 |
4epT, у skipy про это было, кратко так
два числа 0,0 и 0,0000000000001 равны или нет? http://www.skipy.ru/technics/objCompPr.html#real_comp Правильно сравнивать примерно так Math.abs(a - b)<0.0001 если меньше, то считаем равным, предел нужно свой выбирать. Это сообщение отредактировал(а) Connie - 17.2.2011, 13:36 |
|||
|
||||
| aleksandy |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 260 Регистрация: 17.12.2006 Репутация: 4 Всего: 5 |
Наверное, имелся ввиду abs |
|||
|
||||
| Connie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 382 Регистрация: 12.8.2008 Репутация: 1 Всего: 9 |
aleksandy, да, конечно
|
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Где-то написано, что потом нельзя вызывать метод с несколькими параметрами ? Создатель топика программирует уже 2 года - наверно хватит ума сделать вызов с передачей массива, а внутри уже вызывать рекурсию. |
|||
|
||||
| mbasil |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 399 Регистрация: 4.5.2007 Где: Москва Репутация: 2 Всего: 13 |
double a ..., b...;
Ну небось точное: if( a == b ) . . . а не точное, что нибудь в роде: double DELTA = 0.001; if( Math.abs(a-b) < DELTA ) . . . То есть если вы получаете a или b вычислением, то проверять на равенство нужно с учетом точности |
|||
|
||||
| mbasil |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 399 Регистрация: 4.5.2007 Где: Москва Репутация: 2 Всего: 13 |
Если массив одномерный можно и схитрить, спрятав индекс и сумму в самом массив, например так:
|
|||
|
||||
| миг |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 15.9.2008 Репутация: нет Всего: 1 |
что за..
--------------------
Oaks may fall when reeds stand the storm. |
|||
|
||||
| 4epT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: нет Всего: 3 |
goto в Java нет) разве что break/continue label; на таким способом не решишь эту задачу. только через рекурсию ... самый простой способ наверное обернуть те два метода которые написал XoJIoD, в функцию с одним параметром =) а насчет точного и неточного сравнения, так что то и не понял ... то есть как это делается все понятно, но почему то кажется что a == b это как раз не точно сравнение. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |