Решите Номер 3 Пожалуйста , СРОЧНО плиз ХЕЛП

0 голосов

Решите Номер 3 Пожалуйста , СРОЧНО плиз ХЕЛП


image

спросил от (26 баллов) в категории Информатика
1 Ответ
0 голосов
ответил от Архангел (142k баллов)
 
Лучший ответ

// PascalABC.NET 3.1, сборка 1219 от 16.04.2016
function F(n:integer):integer:=(n>100?n-10:F(F(n+4)));
begin
  Print(F(90))  // как пример
end.

Но вся вычислительная проблема в том, что данная функция имеет тенденцию к зацикливанию, что через некоторое время вызывает переполнение программного стека и аварийное завершение программы.
Вот пример того, как это происходит:
F(90)=F(F(94))
F(94)=F(F(98))
F(98)=F(F(102)); F(102)=92; F(98)=F(92);
F(92)=F(F(96));
F(96)=F(F(100)); F(100)=90; F(96)=F(90) и мы вернулись к началу.

Поэтому написать такое контрольное решение, чтобы его удалось выполнить - это отдельная задача.

оставил комментарий от (26 баллов)

а можешь написать саму как бы всю програму чтоб в паскале я написал

оставил комментарий от Архангел (142k баллов)

А что программу? Добавьте begin Writeln(F(F(90))) end. И запускайте в PascalABC.NET 3.1

оставил комментарий от Архангел (142k баллов)

И убедитесь, что выполнение слетит по переполнению стека.

оставил комментарий от Архангел (142k баллов)

Нет...не так... begin Writeln(F(90)) end.

оставил комментарий от Архангел (142k баллов)

У Вас же задание было написать функцию, а не программу.

оставил комментарий от (26 баллов)

не получается , напиши полностью эту функцию плиз

оставил комментарий от Архангел (142k баллов)

Функция и так была написана полностью. Сейчас поправил, написал полную программу с вызовом функции.

...