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;
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5