В интервью меня спросили, что делает приведенный ниже код.
[img]https://i.stack.imgur .com/vaWVx.png[/img]
class Case {
static int count1(int n) {
if (n == 0) {
return 0;
}
int m = n / 2;
if (2 * m != n) {
return 1 + count1(m);
}
return count1(m);
}
static int count0(int n) {
if (n == 0) {
return 1;
}
if (n == 1) {
return 0;
}
int m = n % 2;
return count0((n - m) / 2) + 1 - m;
}
static boolean equivalent(int n, int m) {
return ((count1(n) == count1(m)) && (count0(n) == count0(m)));
}
}
Во-первых, я должен упомянуть, что эта работа — это стажировка по аналитике данных, и единственный требуемый язык — это Python, и я студент-физик, поэтому для меня есть огромная разница между «/ /" и "/".
Сначала мы рассмотрим функцию count1. Я буквально подумал, что это вопрос с подвохом, потому что int(2*m != n) был вопросом с подвохом, потому что он мог вызвать ошибку значения (мне плохо, потому что меня много раз предупреждали о разнице между " //" и "/" в физике, я совершенно забыл, что в других языках "7" может использоваться для целочисленного деления с возвращаемым значением деления этажа. Поэтому я по глупости подумал, что это вопрос с подвохом, и сразу указал, что это будет возможно, выдаст сообщение об ошибке, и if(2*m !=n) может оказаться ненужным.
Теперь, что меня действительно смутило, так это count0, вторая функция Я просто указал, что программа ничего не решает, нет никакой закономерности. Интервьюер сказал, что она должна возвращать 0 или 1, но чтобы она возвращала 0 или 1, тогда должно быть count0((n-m/2+1 -m), то есть каждый термин должен быть в круглых скобках, верно?
Это интервью состоялось вчера вечером. Должен ли я написать своему интервьюеру и сказать ему, что, несмотря на неудачу ответить на вопрос, что делает первая функция, - это моя вина, но ваша вторая функция может иметь логическую ошибку? Конечно, лучше.
PS: ChatGPT сообщает мне, что это код Java, поэтому я добавляю тег «java».
Как я объяснено в тексте выше.
Я понимаю, что, возможно, испортил первую функцию, однако вот проверенный результат, проверенный с использованием Python:
# Implementing count0 function as described in the pseudocode
def count0(n):
if n == 0:
return 1
if n == 1:
return 0
m = n % 2
return count0((n - m) // 2) + 1 - m
# We will calculate the values of count0 for n = 0 to 20
results_count0 = {n: count0(n) for n in range(21)}
results_count0
результаты:
{0: 1, 1: 0, 2: 1, 3: 0, 4: 2, 5: 1, 6: 1, 7: 0, 8: 3, 9: 2, 10: 2, 11: 1, 12: 2, 13: 1, 14: 1, 15: 0, 16: 4, 17: 3, 18: 3, 19: 2, 20: 3}
Подробнее здесь: https://stackoverflow.com/questions/782 ... -interview
Путаница с фрагментом кода на собеседовании ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как написать несколько занятий в одном файле на собеседовании? [закрыто]
Anonymous » » в форуме JAVA - 0 Ответы
- 21 Просмотры
-
Последнее сообщение Anonymous
-