Вот простой вопрос о рекурсии в java. Этот, над которым я работал, но нуждается в уточнении своего подхода.Простой рекурсивный алгоритм Java
Напишите рекурсивный метод с двумя параметрами int, m и n. Предварительное условие требует 0 < = m и m < = n. Метод печатает строку из звездочек, затем строку из m + 1 звездочек и т. Д. Вплоть до строки из n звездочек. Затем повторяется одна и та же картина назад: строка из n звездочек, затем n-1 и т. Д. Вниз до n. Единственный цикл, разрешенный в вашей реализации, - это цикл для печати строки из звездочек.
Это то, что я до сих пор в качестве методов испытаний
package Recursion;
class Asterisk
{
public static void asterisk(int m, int n)
{
if (m == n)
{
printAsterisk(n);
return;
}
else if (m < n)
{
printAsterisk(m);
asterisk(m + 1, n);
}
else
{
printAsterisk(m);
asterisk(m - 1, m);
}
}
public static void printAsterisk(int m)
{
for (int i = 0; i < m; i++)
{
System.out.print("*");
}
System.out.println("");
}
public static void main(String[] args)
{
int m = 3;
int n = 5;
asterisk(m, n);
}
}
Подумайте об этом так: printAsterisk (6, 5) ничего не печатает. printAsterisk (3, 5) печатает 3 звездочки, затем вставляет printAsterisk (4, 5), затем снова печатает 3 звездочки.
Ожидаемый выход
printAsterisk(3, 5)
***
****
*****
*****
****
***
Мой выходной ток
printAsterisk(3, 5)
***
****
*****
'Как распечатать, используя только один вызов метода в main?' Теперь у вас есть только один вызов метода в main() (и у вас также есть две объявления переменных). –
'Предварительное условие требует 0 <= m и m <= n' Если это всегда так, вы можете избавиться от случая else, который обрабатывает m> n. Тем не менее, для реального кода я бы оставил его (потребители вашего кода вряд ли помнят, что предусловие лет в будущем). –
простите меня раньше, я имел в виду один вызов метода для печати звездочек в желаемой последовательности. –