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;
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д