Автор | Сообщение |
|
Отправлено: 16.09.22 20:33. Заголовок: Не выводит ответ. Е.Джобс № 780
Здравствуйте! Подскажите как на Паскаль решить. Ответ не выводит вообще. Е.Джобс № 780 Алгоритм вычисления функции F(n) задан след. соотношениями: F(n)=1 при т=0 F(n)=2*F(1-n)+3*F(n-1)+2 при n>0 F(n)=-F(-n) при n<0 Чему равна сумма цифр зн-я функции F(50)? Не пойму в чем ошибка, не выводит ответ... Подскажите, пожалуйста. function F(n: integer): integer; begin if n = 0 then F := 1; if n > 0 then F := 2 * F(1 - n) + 3 * F(n - 1) + 2; if n < 0 then F := -F(-n); end; begin writeln(F(50)); end.
|
|
|
Ответов - 2
[только новые]
|
|
|
| Администратор
|
Сообщение: 3692
|
|
Отправлено: 16.09.22 21:28. Заголовок: aksy пишет: Ответ не..
aksy пишет: Чтобы функция много раз не вычисляла одно и тоже, все вычисленные значения нужно сохранять в словаре (это называется мемоизация): var m := new Dictionary<integer, integer>; function F( n: integer ): integer; begin if n in m then Result := m[n] else begin if n = 0 then Result := 1 else if n > 0 then Result := 2*F(1-n) + 3*F(n-1) + 2 else Result := -F(-n); m[n] := Result; end; end; begin Print( F(50) ) end.
|
|
|
|
Отправлено: 16.09.22 21:39. Заголовок: спасибо большое!..
спасибо большое!
|
|
|
|