Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/30: Рейтинг темы: голосов - 30, средняя оценка - 4.63
2 / 2 / 0
Регистрация: 28.09.2011
Сообщений: 26
1
.NET 4.x

Process is terminated due to StackOverflowException

16.10.2011, 11:11. Показов 5597. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Закодировал простенький пример из книги по расчету факториала, при отладке выдает ошибку:
Process is terminated due to StackOverflowException


Текст C#:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//вычисление факториала числа
 
using System;
 
class Factorial {
    public int FactR(int n) {
        int result;
 
        result = FactR(n - 1) * n;
        return result;
    }
}
 
 
class Recursion {
    static void Main(string [] args) {
 
        int x;
        x = 4;
        Factorial obj = new Factorial();
 
        Console.WriteLine("Факториал числа {0} равен {1}", x, obj.FactR(x));
    }
    
}
Подскажите, в чем ошибка:
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.10.2011, 11:11
Ответы с готовыми решениями:

Process terminated due to StackOverflowException (Перебор всевозможных вариантов)
Всем здравствуйте. Я пишу программу, которая перебирает всевозможные варианты ходов в карточной...

The process was terminated due to an unhandled exception
Отваливается прога без ответа и привета... в журнале ощибок оставляет метку Тип события: ...

Process is terminated due to StackOverflowException
Почему выдается исключение System.StackOverflowException? using System; using System.Net;...

Process is terminated due to StackOverflowException
При компиляции получаю эту ошибку в консоли. Что не так? Откуда переполнение стека? using System;...

5
Эксперт .NET
17688 / 12873 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
16.10.2011, 11:27 2
Вот здесь:
C#
1
2
3
4
5
6
public int FactR(int n) {
 int result;
 
 result = FactR(n - 1) * n;
 return result;
 }
Вопрос: В какой момент метод перестает вызывать сам себя?
Ответ: Когда в стэке не остается места для вызова.
1
29 / 29 / 8
Регистрация: 13.12.2009
Сообщений: 70
16.10.2011, 11:32 3
Вставьте условие, т.к. уменьшая n на единицу факториал станет равным 1, а это и есть 1, а не то будет бесконечность!:
C#
1
2
3
4
5
6
7
8
9
10
11
 if (n == 1 || n == 0)
            {
                return 1;
            }
            else
            {
                int result;
 
                result = FactR(n - 1) * n;
                return result;
            }
1
2 / 2 / 0
Регистрация: 28.09.2011
Сообщений: 26
16.10.2011, 11:43  [ТС] 4
спасибо
0
Эксперт .NET
17688 / 12873 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
16.10.2011, 11:45 5
И не лень вам столько писать...
C#
1
2
3
4
5
public int FactR(int n)
{
   if (n <= 1) return 1;
   return n * FactR(n-1);
}
0
29 / 29 / 8
Регистрация: 13.12.2009
Сообщений: 70
16.10.2011, 11:57 6
kolorotur
Ну так подробнее хотелось показать новичку)
0
16.10.2011, 11:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.10.2011, 11:57
Помогаю со студенческими работами здесь

Process is terminated due to StackOverflowException
В задачке по рекурсии вылезает вот эта ошибка:Process is terminated due to StackOverflowException....

Ошибка Process is terminated due to StackOverflowException
Как можно исправить данную ошибку в этом коде? using System; using System.Collections.Generic;...

Ошибка Process is terminated due to StackOverflowException
using System; using System.Collections.Generic; using System.Linq; using System.Text; using...

Ошибка process is terminated due to stackoverflowexception
Подскажыте что сделать что бы код заработал using System; using System.Collections.Generic;...

Process Nlogasio.exe Has Terminated Abnormally
Добрый день! Сервер рухнул вот с такой ошибкой, которая принтуется в консоли каждые полминуты....

Аварийное завершение Process terminated with status -1073741510
Работаю в Code Blocks. Добавил файлы и настроил линкер с компилятором для graphics.h. Билдится, но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru