Я изучаю рекурсию, и есть пример, который я решаю, написав символ * определенное количество раз.
Например: если вы должны были передать число 3, оно должно напечатать 2 ^ 3 звезды, поэтому оно напечатает 8 звезд.
Я должен напечатать его 2 ^ k раз, где k — переданное целое число. Ответ на вопрос:
public String printStars(int k) {
if (k == 0)
return "*";
else
return printStars(k - 1) + printStars(k - 1);
}
Кажется, я не могу понять стек вызовов и то, как это решает проблему, как я это вижу, когда я передаю 3 для int k, он будет делать n - 1 3 раза, пока не достигнет базового случая, и вернет 2 звезды к вызову перед этим, и поскольку для этого потребовалось 3 уровня, он напечатает 3 x 2 звезды, поэтому он напечатает 6 звезд. Это странно, потому что большинство других рекурсий легко даются мне, но это сбивает с толку.
k
вместоn
(или наоборот). - person Andy Turner   schedule 15.03.2016