Process is terminated due to StackOverflowException - C# (200944)

Узнай цену своей работы

Формулировка задачи:

В задачке по рекурсии вылезает вот эта ошибка:Process is terminated due to StackOverflowException. Как можно исправить?
Листинг программы
  1. static void prost(long l, long p)
  2. {
  3. if (l == 0) Console.WriteLine("вы ввели 0");
  4. else if (l == 1) Console.WriteLine("вы ввели 1");
  5. else if (p == 1) Console.WriteLine("число простое");
  6. if (l % p == 0) Console.WriteLine("число не простое");
  7.  
  8. else
  9. prost(l, p - 1);
  10. }
  11. static void Main(string[] args)
  12. {
  13. Console.WriteLine();
  14. {
  15. Console.WriteLine("введите число");
  16. long x = long.Parse(Console.ReadLine());
  17. prost(x, x - 1);
  18. Console.ReadLine();

Решение задачи: «Process is terminated due to StackOverflowException»

textual
Листинг программы
  1. static void Main()
  2. {
  3.     for (int i = 0; i < 10; i++)
  4.         if (prost(i, 2))
  5.             Console.WriteLine("Число {0} простое", i);
  6. }
  7.  
  8. static bool prost(long l, long p)
  9. {
  10.     if (l < 2) return false;
  11.     else if (l == 2) return true;
  12.     else if (l % p == 0) return false;
  13.     else
  14.     {
  15.         if (p < (long)Math.Sqrt(l))
  16.             return prost(l, ++p);
  17.         else
  18.             return true;
  19.     }
  20. }

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут