public static int min(int a, int b, int c, int d) {
return min(min(a, b), min(c, d));
}
public static int min(int a, int b) {
if (a < b) {
return a;
} else {
return b;
}
}
Maria Volkova
3 уровень
подскажите, как main возвращает аргументы (с, d), если метод был прописан только для a и b, а болше c и d нигде не фигурируют?
Обсуждается
Комментарии (7)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Павел Безумный учёный Expert
25 сентября 2021, 00:58
Аргументы метода - это переменные, которые действуют только в пределах своего метода. Переменные a, b, c и d метода min() с четырьмя аргументами "видны" только в пределах этого метода. А метод min() с двумя аргументами имеет свои две переменные - a и b, которые также доступны и "видны" только в пределах своего метода. Таким образом, оба метода могут иметь аргументы-переменные с одинаковыми именами, и это не порождает никаких конфликтов имён.
+2
Павел Безумный учёный Expert
25 сентября 2021, 00:58
Следующий пример демонстрирует "механику" работы методов min().
Предположим, метод min() вызывается с аргументами 1, 4, 3, 2. В теле метода при этом происходит следующее:
Для каждой пары аргументов вызывается "двухаргументная" версия метода min(): сначала для a и b (красный вызов), затем для c и d (зелёный вызов). Каждый из этих вызовов возвращает вычисленное значение, то есть меньшее число из своей пары.
После отрабатывания красного и зелёного вызовов min() имеем следующую картину:
Здесь "двухаргументный" метод min() вызывается в третий раз, и теперь в него передаются значения, полученные на предыдущем шаге.
После выполнения третьего вызова min() получим конечный результат, который и будет возвращён из "четырёхаргументной" версии:
+6
Владислав Демченко Java Developer
25 декабря 2021, 10:54
воу, Павел, большое спасибо
0
Евген
24 сентября 2021, 07:04
ну, начнем с того, что main аргументы не возвращает, он возвращает void, то есть ничего
но ты, скорее всего, имел ввиду функцию min. Обрати внимание, там 2 функции с названием min, одна из них принимает 2 аргумента, другая 4. Та, что 4 принимает, сокращает количество аргументов до 2х с помощью той, что принимает 2 аргумента.
Но все же, уточни, пожалуйста, свой вопрос в части названия метода
+1
Maria Volkova
24 сентября 2021, 23:59
да, речь шла про min. Не совсем понятно про вложеный метод в оператор возврата, и уж темболее не понятно, как вычислился миниму между с и d, если их даже не сравнивали.
0
Евген
25 сентября 2021, 17:01
тоже самое на конкретном примере, пусть a = 7, b = 3, c = 9, d = 4. Чтобы у тебя не
ломалась голова от одинаковых имен переменных, заменим во втором методе их на
m и n, результат не изменится
+1
Александр
24 сентября 2021, 05:44
в комментарии от 6 августа, 19:10 к задаче все объяснено
https://javarush.com/tasks/com.javarush.task.task02.task0217
+1