У меня есть рекурсивная функция, которая добавляет значение number
к первому рекурсивному вызову, добавляет number-1
к второму рекурсивному вызову и так далее, пока не достигнет 0. Я реализовал эту функцию как:Избегание переполнения стека при рекурсивном добавлении номеров
public static int func(int number, int retval=0)
{
if (number<=0)
return retval;
return func(number-1, retval+number);
}
Как я могу написать это без создания переполнения стека, когда он вызывается с большим значением number
? Нужен ли мне отдельный файл?
Это не про * файлы * здесь, это о рекурсии, что достаточно глубоко вытащите стопку. Вместо этого сделайте свой метод итеративным (или используйте язык, поддерживающий рекурсию хвоста, например F # :)) – MarcinJuraszek
Извините, пожалуйста, можете ли вы уточнить? –