Aimez-vous les baguettes?
193 / 26 / 27
Регистрация: 25.10.2017
Сообщений: 165
1

Программный стек переполняется, улетая на орбиту

28.10.2017, 19:44. Показов 445. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Работаю с рекурсией впервые, при выполнении программы выдает ошибку переполнения стека:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Var number: integer;
  DefaultN : array[1..15] of integer = (0,1,2,3,4,5,6,7,8,9,10,100,1000,10000,100000);
  ChineseN : array[1..15] of String = ('ling','yi','er','san','si','wu','liu','qi','ba','jiu','shi','bai','qian','wan','yii');
  
  function Func(num: integer) : String;
  Var answer: string = '';
  i: integer;
  steps: integer := 0;
  begin
  while steps < num.ToString.Length do begin
      for i:=15 downto 1 do if (num div DefaultN[i] > 0) and (num div DefaultN[i] < 9) then begin
      answer += ChineseN[i] + ' ';
      Func(num mod i);
      inc(steps);
      end;
  end;
  Func:= answer;
  end;
  
  begin
  Readln(number);
  Writeln(Func(number));
end.
-> 13
Ошибка времени выполнения: StackOverflowException: Программа завершена из-за переполнения программного стека.
Буду рад, если наведёте на мысль решения проблемы.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.10.2017, 19:44
Ответы с готовыми решениями:

Стек переполняется и переполняется...
Короче говоря, в ходе написания программы наткнулся на то, что все время вылетает ошибка о том, что...

Переполняется стек
Вот код: #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;algorithm&gt; using namespace std; ...

Почему переполняется стек
Написал программу, но не пойму почему переполняется стек. Суть программы - возведение в степень ч/з...

Переполняется стек когда запускаю программу
http://stu.scask.ru/book_trd.php?id=55 разложение через сумму дробей //Функция, которая...

1
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
28.10.2017, 19:52 2
Интересно как это Вы в цикле внутри функции вызываете эту функцию?
Pascal
1
2
3
4
5
6
7
while steps < num.ToString.Length do
   begin
    for i:=15 downto 1 do if (num div DefaultN[i] > 0) and (num div DefaultN[i] < 9) then begin
    answer += ChineseN[i] + ' ';
    Func(num mod i);//????
    inc(steps);
   end;
0
28.10.2017, 19:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2017, 19:52
Помогаю со студенческими работами здесь

Переменные в стеке. Где хранятся? Как обрабатываются? Есть ли программный стек или только стек процессора?
Есть у меня пробелы в познаниях, хотел бы их устранить. 1. Что такое стек в самом языке С++ ? 2....

Полет ракеты на орбиту
Многоступенчатая (3 ступени) ракета стартует с земли и перпендикулярно плоскости земли поднимается...

Память переполняется
Вот код. Не могу понять. Все равно память переполняется и прога не работает. protected void...

QStringList переполняется
QString FilePath = QFileDialog::getOpenFileName(this, tr(&quot;Загрузить файл&quot;),&quot;F://&quot;,&quot;Text File...

Почему массив не переполняется?
Вот в одной книге есть задание создать вектор и скопировать элементы в массив. Почему массив не...

переполняется Mail.box
Здравствуйте, проблема в следующем: какой то спамер использует мой сервер для рассылки ;) Когда он...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru