Может ли быть рекурсивной функция типа void?
Функция типа void -это функция, которая не возвращает значения, вот и все.
Рекурсия - это вызов функцией себя же, и с каждым разом на определенном этапе
То, что функция является void , еще не забирает у нее всех остальных свойств , присущих функциям, поэтому ответ - Да, может
Вы, наверное, прекращаете рекурсию снаружи? Я же обычно в самой рекурсивной функции. Вернуть значение, если оно требуются снаружи, а это не обязательно, проще всего через аргумент типа out, в C# можно ещё ref, в С++ в содержимом по переданному указателю (как в WinAPI).
Я попробую дать обьяснение без слов в примере:
Factorial(10,0,1);
public void Factorial(int max, ref int number, ref int value)
{
number++;
if(number>=max)
return;
value*=number;
Factorial(max, number, value);
}
код писал из головы не проверяя, так что могли закрастся ошибки.
Но условие выполнено -- метод возвращает void. :)
как видишь, все быть может.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости