Process is terminated due to StackOverflowException - C# (200944)
Формулировка задачи:
В задачке по рекурсии вылезает вот эта ошибка:Process is terminated due to StackOverflowException. Как можно исправить?
static void prost(long l, long p)
{
if (l == 0) Console.WriteLine("вы ввели 0");
else if (l == 1) Console.WriteLine("вы ввели 1");
else if (p == 1) Console.WriteLine("число простое");
if (l % p == 0) Console.WriteLine("число не простое");
else
prost(l, p - 1);
}
static void Main(string[] args)
{
Console.WriteLine();
{
Console.WriteLine("введите число");
long x = long.Parse(Console.ReadLine());
prost(x, x - 1);
Console.ReadLine();Решение задачи: «Process is terminated due to StackOverflowException»
textual
Листинг программы
static void Main()
{
for (int i = 0; i < 10; i++)
if (prost(i, 2))
Console.WriteLine("Число {0} простое", i);
}
static bool prost(long l, long p)
{
if (l < 2) return false;
else if (l == 2) return true;
else if (l % p == 0) return false;
else
{
if (p < (long)Math.Sqrt(l))
return prost(l, ++p);
else
return true;
}
}