Автор | Сообщение |
|
Отправлено: 30.03.21 19:38. Заголовок: ЕГЭ 16
Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующими соотношениями: F(n) = n, при n ≤ 1 F(n) = n + F(n / 3-1) , при n > 1 и делиться на 3 F(n) = n + F(n+3), при нечётных n > 1 и не делится на 3 Назовите минимальное значение n , для которого F(n)>1000 var n: integer; i: integer; function F(n: integer) : integer; begin if n <= 1 then F := n else if (((n mod 3) = 0) and (n > 1)) then F := n + F(n div 2 - 1) else if (((n mod 3) <> 0) and (n > 1)) then F := n + F(n +3); end; begin i := 1; while F(i) <=1000 do i := i + 1; writeln(i); end. Ошибка: Ошибка времени выполнения: StackOverflowException: Программа завершена из-за переполнения программного стека Пожалуйста, помогите понять, что не так?
|
|
|
Ответов - 1
[только новые]
|
|
|
| Администратор
|
Сообщение: 2650
|
|
Отправлено: 31.03.21 18:00. Заголовок: Из условия видно, чт..
Из условия видно, что при некоторых n вы получаете бесконечную рекурсию. Что с ней делать, можно посмотреть в соседних темах, например, здесь.
|
|
|