Есть ответ 👍

Написать программу на паскале. написать. числа фибоначчи (fn) определяются формулами: f0=f1=1, fn=fn-1+fn-2 при n=2,3,… определить f10, f25, f40.

145
396
Посмотреть ответы 2

Ответы на вопрос:


1) решение с рекурсии. программа проста в понимании, но неэффективна при больших значениях function f(i: integer): longint; begin   if i < 2 then       f : = 1   else       f : = f(i - 1) + f(i - 2); end; begin   writeln('f(10) = ', f(10));   writeln('f(25) = ', f(25));   writeln('f(40) = ', f(40)); end. 2) решение с динамического программирования. вычисляет намного быстрее, чем решение с рекурсией. var   i: integer;   f: array[0..40] of longint; begin   f[0] : = 1;   f[1] : = 1;   for i : = 2 to 40 do       f[i] : = f[i - 1] + f[i - 2];   writeln('f(10) = ', f[10]);   writeln('f(25) = ', f[25]);   writeln('f(40) = ', f[40]); end. 3) решение с моделирования. использует меньше памяти. function f(i: integer): longint; var   a, b: longint;   j: integer; begin   if i < 2 then       f : = 1   else   begin       a : = 0;       b : = 1;       for j : = 0 to i do       begin           b : = a + b;           a : = b - a;       end;       f : = a;   end; end; begin   writeln('f(10) = ', f(10));   writeln('f(25) = ', f(25));   writeln('f(40) = ', f(40)); end.

ответ:

var g,h: integer;

gg,hh,d: real;

begin

repeat

read(g,h);

if g=0 and h=0 then break;

gg: =30*(g mod 12)+h/2;

hh: =h*6;

d: =abs(gg-hh);

if d> 180 then d: =360-d;

writeln('at ',g,': ',h,' the angle is ',d: 2: 1,' degrees.');

until false;

end.

Популярно: Информатика