![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| sashkr |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 5.6.2008 Репутация: нет Всего: нет |
помогите пожалуйста с задачей на рекурсию
дан одномерный массив int и число int надо написать функцию boolean которая получает число(к массиву можно обращаться напрямую в классе) и возвращает true если в массиве есть числа сумма которых равна полученному числу,false если нет. |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Можно попробовать бектрейс
запускать надо sumExists(N, 0); |
|||
|
||||
| sashkr |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 5.6.2008 Репутация: нет Всего: нет |
спасибо,забыл написать что функция не может пользоваться циклами вообще
Добавлено @ 22:40 я что-то написал,но не совсем работает..
Это сообщение отредактировал(а) powerOn - 5.6.2008, 23:59 |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Ага, и я что-то сказал, но не совсем объяснил.
Вспомнил старый добрый курс Lisp'а cover(new int[]{1,2,3}, 0, 4) Добавлено через 5 минут и 10 секунд Помню, на таких задачках денюшки только так рубил. Боятся люди рекурсии, непонятно почему? Это сообщение отредактировал(а) Platon - 5.6.2008, 23:08 |
|||
|
||||
| sashkr |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 5.6.2008 Репутация: нет Всего: нет |
в массиве {5,22,13,5,7,-4} проблема с 31(22+13-4)..
с нулём можешь подсказать что делать,я вот тоже написал,вроде работает-правда не совсем понимаю как но с нулём тоже проблема...
Добавлено @ 23:28 кстати спасибо огромное за внимание и помощь!!!!! Это сообщение отредактировал(а) powerOn - 6.6.2008, 00:00 |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Окэй, тогда в моей схеме убери ветку на проверку меньше нуля:
Добавлено @ 04:22 Батенька, у вас черт ногу сломит. Очень "хитро накосячено", тяжко для понимания. Скорее всего твой преподаватель попутал курсы, обычно обучение мастерству рекурсий обучают на лиспе, но скорее всего он ждет от тебя моего решения. Моё решение, как раз стилизованно под лисповский подход, так что примите к сведению. Это сообщение отредактировал(а) Platon - 6.6.2008, 05:13 |
|||
|
||||
| sashkr |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 5.6.2008 Репутация: нет Всего: нет |
Преогромное спасибо,
|
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Помогли тебе, помоги другим!
|
|||
|
||||
| Gaon |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 7.6.2008 Репутация: нет Всего: нет |
вы бы не могли объяснить как действует эта рекурсия?
|
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Gaon, давайте я оставлю это на самостоятельное изучение. Уж в 3-х строчках кода разобраться, ну совсем, несложно.
Добавлено через 41 секунду Сдается мне вы ребята с 1 учебного заведения? |
|||
|
||||
| Gaon |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 7.6.2008 Репутация: нет Всего: нет |
похоже что с одного.
как я понял cover(arr, i + 1, am - arr[i]) вычитает из суммы числа с массива, а вот что дает cover(arr, i + 1, am) и как они относятся один к другому...... будем грызть дальше |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Думай-думай. Я и так уже рыбу тебе поймал, хотя рекомендуют давать только удочки. Хоть разделай ее самостоятельно. Предлагай версии, я скажу - правильно думаешь или нет.
Добавлено через 5 минут и 28 секунд Давай так. Вообще как ты видишь решение этой задачи без рекурсии, без машинного языка. На словах, сам алгоритм. |
|||
|
||||
| Gaon |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 7.6.2008 Репутация: нет Всего: нет |
допустим есть сумма 23 , и числа 2,13, 10.
из сумми вичитаетса 2, если остаток менше 23 и больше 0 вичитается 2 число и тд. до конца. если остаток не поподает в этот промежуток, прыгаем на 2 число и тд. |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
хм, интересно а такая последовательность у тебя не пройдет: 23, {2, -13, 36} а по условию сказано, что в последовательности может быть отрицательное число, думай дальше.
|
|||
|
||||
| Gaon |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 7.6.2008 Репутация: нет Всего: нет |
23,{2,-13,36}
тогда вычитаем первое число из сумм и провераем если есть остаток в данных если есть или нет. помоему ты так и сделал |
|||
|
||||
![]()
|
| Правила форума "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. |