#java #function #return #invariants
#java #функция #Возврат #инварианты
Вопрос:
Может кто-нибудь сказать мне, что делает эта функция? Я просто знаю, что она возвращает сумму x y, но я хочу знать, почему. Спасибо
public static int f(int x, int y){
while( y > 0){
x = x 1;
y = y - 1;
}
return x;
}
Комментарии:
1. Пройдите через это шаг за шагом и приложите некоторые усилия для изучения вещей в следующий раз, когда у вас возникнет вопрос.
2. если
y <= 0
он просто возвращаетx
, а не сумму x y3. эта функция добавляет 1 y раз к x. Итак, он возвращает x y
4. Почему
1 1
равно2
? Peano может помочь вам понять.5. Спасибо за помощь!
Ответ №1:
Есть два случая:
Первый случай: y <= 0
Поскольку цикл while имеет значение false, он просто возвращает x («он пропускает часть»)
Второй случай: y> 0
Поскольку цикл while имеет значение true, он возвращает x y (x количество итераций)
Количество итераций — это значение y, потому что с каждой итерацией y будет уменьшаться на 1, пока y = 0.
Ответ №2:
Цикл начинается со значения y и уменьшает его на каждой итерации, останавливаясь, когда y достигает нуля.
Для каждой из этих итераций к x добавляется 1. Следовательно, для «единицы» y к x добавляется «единица».
Редактировать Как отмечено в комментариях, функция не вернет сумму двух чисел, если y
она меньше нуля, поскольку цикл вообще не будет выполняться.
Комментарии:
1. Вы предполагаете, что
y
это начинается со значения, большего нуля. Как указывает Дмитрий Быченко в своем комментарии, еслиy
начинается со значения, равного нулю или меньшего нуля, то ничего не добавляетсяx
и возвращается исходное значениеx
.
Ответ №3:
Добавление можно рассматривать как серию приращений. Вот что делает эта функция. Он увеличивает x
y
время и возвращает результат, который есть x y
. Предполагается, что y
это натуральное число.
Комментарии:
1. Кто-нибудь может объяснить отрицательные голоса и запрос на удаление? Я этого не понимаю.
2. Я не знаю, я думаю, что ваш ответ также полезен. Я дал вам 1
3. Я проголосовал против, потому что, как объясняли другие комментарии и ответы, метод не всегда возвращает
x y
, поэтому утверждать, что он возвращает это, неверно. Если вы получаете отрицательные голоса, удалите или измените свой ответ для решения любых подобных проблем. (Конечно, если вы внимательно проверите ответ и решите, что все в порядке, тогда вам следует просто игнорировать отрицательные голоса.)4. @Bobulous: «… измените свой ответ, чтобы решить любые подобные проблемы». Но это то, что я сделал.
5. Мне все еще не понятно. Метод не предполагает, что
y
это больше нуля, он выполняет явную проверку, чтобы определить, больше ли оно нуля.