Мне нужна помощь с проблемами рекурсии Java - PullRequest
0 голосов
/ 09 апреля 2011

Это моя первая проблема:

gcd(x,y)
  if (x < y)
    gcd(y,x)
  else
    if (y = 0)
      return x
    else
      return gcd(y, x mod y)

Это моя вторая проблема:

public static int Test2(int x, int y) {
  if (x > y) {
    return 10;
  } else {
    return Test2(x-5, y+5) + 5;
  }
}

Вопрос: что возвращается за gcd(84, 21)?

  • а.84
  • б.21
  • с.3 (Это правильный ответ)
  • d.10

X равно 84, а y равно 21. Поэтому я провожу их через класс Algorithm.84 не меньше 21, поэтому я пропускаю это утверждение if.84 не равно, поэтому я пропускаю это утверждение.Я иду, чтобы вернуть GCD (у, х мод у).Я не понимаю, что такое мод и как вы понимаете, что это значит?

Вторая проблема!Вопрос: Что возвращается за Test2(18,5)?

  • A.5
  • B.10 Я выбираю десять, потому что x больше, чем y, и при обработке в оператор if.Возвращает значение десять.Операторы if не выполняют ничего, кроме оператора return.
  • C.15 Ответ 15.
  • D.20

Ответы [ 3 ]

0 голосов
/ 09 апреля 2011

Оператор по модулю возвращает остаток от операции деления.например, 3 mod 2 = 1, поскольку 1 - это остаток.% обычно используется как символ для мод.В этом примере 84 mod 21 равно 0, поскольку 21 делится поровну на 84 четыре раза.

0 голосов
/ 09 апреля 2011

mod - это функция по модулю . Это остальное, когда вы делите два целых числа. Например,

1 mod 3 = 1
2 mod 3 = 2
3 mod 3 = 0
4 mod 3 = 1
10 mod 4 = 2

10 - правильный ответ на второй вопрос, ваш аргумент верен.

0 голосов
/ 09 апреля 2011

x mod y не является допустимой Java, x % y является и это означает по модулю;что если после целочисленного деления x на y.

Btw, что вы имеете в виду под this is the answer и the answer is 15?Лучше обдумать проблему и объяснить свой ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...