N раз числа с использованием Recursion_how как работает возвращаемый тип метода рекурсии

#java #recursion #numbers #return #multiplication

#java #рекурсия #числа #Возврат #умножение

Вопрос:

 private static int nTimesK(int n, int k) {
System.out.println("n: "   n);
// Recursive Case
if(n > 1) { 
    return k   nTimesK(n - 1, k);
}
// Base Case n = 1
else { 
    return k;
}
}
public static void main(String[] args) {
int result = nTimesK(4, 4);
System.out.println("Result: "   result);
}
  

Запрос:
он выполняется как return k ntimesK(3,4), он выполняется как return k ntimesK (2,4), он выполняется как return k ntimesK(1,4)
где n = 1 — базовый вариант. хотел знать, как 4 ntimesK(3,4) приведет к значению 8, за которым следует 12 и, наконец, 16.

Комментарии:

1. В чем ваш вопрос?

2. Итак, это работает, но вы хотите, чтобы это объяснили?

3. да @NomadMaker . Объяснение было дано, как я упоминал в запросе. нужно знать, как вернуть k ntimes (3,4) равным 8. Я новичок в программировании и пытаюсь учиться, поэтому надеюсь, что какой-нибудь текст поможет понять это.

4. Это просто неэффективный способ демонстрации умножения посредством повторного сложения.

Ответ №1:

Предположим, вы вызываете метод, передающий в 4 и 4 (т. Е. nTimesK(4,4)), внутри метода, поскольку n> 1 (4 больше 1) он выполняется return k nTimes(n-1, k) . Оператор заменяется на 4 nTimesK(3,4) (мы называем этот пункт A). Вычисление не может вернуть ответ, потому что ему приходится ждать результата nTimesK(3,4) . Когда вызывается nTimesK(3,4), он должен вернуться 4 nTimesK(2,4) (мы называем эту точку B) к первому вызову (A). Он должен дождаться nTimesK(2,4) выполнения, прежде чем возвращать результат. Итак, вызывается nTimesK(2,4), и он возвращает 4 nTimesK(1,4) (мы называем эту точку C). Когда C выполняет nTimesK(1,4), вызов возвращает 4 (являющееся базовым условием. т. е. n = 1). Таким образом, C теперь может возвращать 4 4 (=8)в B. B также теперь может возвращать 4 8 (= 12) в A. A вычисляет 4 12 (=16) и возвращает ответ на исходный вызов. Отсюда и значение 16.