Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 18.06.2016
Сообщений: 10

Вызов внутреннего метода, применение charAt()

16.08.2016, 14:19. Показов 1405. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Помогите понять код. Не могу разобраться, как работает метод с вызовом самого себя void backward(int idx) {
if(idx != str.length()-1) backward(idx+1);
.
Заранее спасибо =)
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class StringViceVersa {
    String str;
 
    StringViceVersa(String s) {
        str = s;
    }
 
    void backward(int idx) {
        if(idx != str.length()-1) backward(idx+1);
 
        System.out.print(str.charAt(idx));
    }
}
 
 
class BWDemo {
    public static void main(String[] args) {
        StringViceVersa s = new StringViceVersa("This is a test!");
    
        s.backward(0);
    }
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.08.2016, 14:19
Ответы с готовыми решениями:

Вызов метода внутреннего класса методом внешнего класса
Не могу разобраться как реализовать вложенный класс и как его вызвать. Занимаюсь по Лафоре, про вложенные классы ничего, а задача в конце...

Полиморфизм: вызов метода базового класса, переопределенного метода и нового метода
В базовом классе метод помечен как virtual. Насколько я понял из книги: override означает, что метод не утрачивает связи с базовым...

Вызов внутреннего прерывания из внешнего
Всем День добрый, может кто подсказать правильно ли организован вызов прерывания по совпадению ? просто это моя первая программа для МК. И...

5
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
16.08.2016, 14:46
До тех, пока не дойдет до последнего символа, backward будет вызывать сам себя, передавая в качестве аргумента индекс следующего символа. Когда он окажется на последнем символе условие не сработает, выполнится следующая команда - sysout, потом управление вернется в метод backward с предыдущей буквой, распечатает ее, ну и так далее.
0
84
 Аватар для 84
28 / 33 / 12
Регистрация: 11.04.2016
Сообщений: 132
17.08.2016, 08:15
AyerT, Это называется "рекурсия". Весьма интересная, занятная, но в то же время сложная штука. Советую ознакомиться более подробно =)
0
0 / 0 / 0
Регистрация: 18.06.2016
Сообщений: 10
17.08.2016, 10:05  [ТС]
84, спасибо, канеш, что подсказали как подобный метод называется, наверное в каждой книжке его так и величают но я просто попросил в этом случае пояснить работу этого метода, PEACE!
0
0 / 0 / 0
Регистрация: 18.06.2016
Сообщений: 10
19.08.2016, 11:09  [ТС]
xoraxax, а можно слегка расписать пример? я никак не могу понять, почему значения выводятся в обратном порядке. Как я понимаю, так в начальное значение переменной idx подается 0, после идет условие if, которое говорит если "0" не равен "14" (15-1) то вызывается метод backward с idx (0+1) = 1. И так далее до конца завершения условия. Syste.out. ... выводит нам значение с параметром idx... Тесть в моем понятии это от "0" до "14", как была и строка в начале кода. =)
Походу я не совсем правильно понимаю рекурсию ))
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
19.08.2016, 11:41
Лучший ответ Сообщение было отмечено AyerT как решение

Решение

Вот вызываешь ты backward(0), у тебя idx==0, условие выполнилось, вызывается функция backward(1) - до sysout мы еще не дошли, попадаем в другой контекст, в котором idx==1, условие опять выполняется, вызывается backward(2), допустим это последний символ, условие не выполнится, idx==2, вызывается sysout(str.charAt(2)), управление возвращается в функцию backward, где idx==1, выполняется sysout(str.charAt(1)), управление возвращается в backward(0), вызывается sysout(0).
Открой в дебаггере - посмотри как выполняется.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.08.2016, 11:41
Помогаю со студенческими работами здесь

Вызов методов классов друг у друга (вызов метода из другого класса)
Есть несколько классов, которые могут вызывать методы (функции) друг у друга. Логика: класс1 имеет метод А, класс2 имеет метод Б, класс1...

Вызов метода агрегата из метода агрегируемого класса
Есть класс-агрегат Game function Game() { this.game_map = null; // другие члены } Game.prototype.needToCall = function() {...

Вызов метода, ожидающего завершение другого метода
Имеется процедура Proc. Я её вызываю в Button. Только вот программа, не дожидаясь завершения процедуры переходит к следующей строчке кода....

Вызов переменной метода из другого метода
class A(): def m(self): number = x #переменный параметр - номер заявки, определяется во время выполнения метода ...

Вызов переменной метода A из метода В
Добрый день. Подскажите как происходит вызов Например даны два класс А и В, в каждом классе есть Метод 1 и метод 2 class A { void...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru