Как работает абсолютная разница «N»? Требуется объяснение - PullRequest
0 голосов
/ 02 апреля 2020

Я делаю java упражнение в программировании летучей мыши и наткнулся на следующий вопрос. Честно говоря, я не мог понять вопрос и искал решение. Не могли бы вы, ребята, объяснить, пожалуйста, приведенный ниже код и как работает лог c?

Вопрос:

Если задано значение int n, вернуть абсолютную разницу между n и 21, кроме return double абсолютная разница, если n больше 21.

diff21 (19) → 2 diff21 (10) → 11 diff21 (21) → 0

Код решения. Зачем нам вычитать N из 21?

public int diff21(int n) {
  if (n <= 21) {
    return 21 - n;
  } else {
    return (n - 21) * 2;
  }
}

Ответы [ 3 ]

0 голосов
/ 02 апреля 2020

Вы должны вычесть N из 21, потому что абсолютное значение - это положительная разница между 2 числами. n-21 недопустимо, потому что если n больше 21, программа просто возвратит double n, так что вы знаете, что n никогда не должно быть больше 21. Поэтому n-21 всегда будет возвращать отрицательное значение, которое не должно происходить, потому что упражнение требует абсолютного значения, которое всегда положительно.

0 голосов
/ 02 апреля 2020

Чтобы найти разницу между двумя числами, нужно определить, как далеко эти два числа находятся друг от друга.

Например, разница между 1 и 7 равна 6, что можно найти, выполнив 7-1. Вы должны вычесть большее значение из меньшего значения, чтобы найти разницу, иначе вы получите неправильное число.

В вашем примере, если код if(n<=21) возвращает true, тогда значение n будет меньше или равно 21, что означает, что это безопасно сделать 21-n.

Если вы не использовали оператор if-else и вместо этого в вашем коде было только return 21-n;, тогда если значение n больше 21, будет возвращено отрицательное число, которое будет неправильным.

0 голосов
/ 02 апреля 2020
If n > 21:
  # as quoted: "double the absolute difference"
else:
  # return just the absolute difference

Абсолютное число всегда положительно (действительное число).

https://en.wikipedia.org/wiki/Absolute_value

...