Составить алгоритм и написать программу ** языке Pascal: Алгоритм вычисления значения...

0 голосов
46 просмотров

Составить алгоритм и написать программу на языке Pascal: Алгоритм вычисления значения функции F(n), где n - натуральное число, задан следующими соотношениями:
F(n) = F(n-1)+ F(n/2), при n>1 и n кратно 2 F(n)=f(n-1) + F(n-2) , при n >1 и n не кратно 2 F(1)=1 Чему равно значение функции F(8)?


Информатика (19 баллов) | 46 просмотров
0

На каком языке надо писать, Вам совершенно все равно?. И потом, что значит "написать алгоритм"? По-русски написать?

0

Хотя... в Вашей формулировке "составить алгоритм" может означать и мысленное построение алгоритма, поэтому достаточно привести текст программы.

0

да если можно по русски

0

Здесь всё по русски и понатно, я уже давно исправил формулировку. А если Вам и это не понятно, то здесь Вам делать нечего.

Дан 1 ответ
0 голосов
Правильный ответ
F=\begin {cases} 1, \ n=1 \\ F(n-1)+F(n/2), \ n=2,4,6,... 2k \\ F(n-1)+F(n-2), n=3,5,7... 2k+1 \end {cases}

function F(n:integer):integer;
begin
  if n=1 then F:=1
  else
    if (n mod 2)=0 then F:=F(n-1)+F(n div 2)
    else F:=F(n-1)+F(n-2)
end;

begin
  Writeln('F(8)=',F(8))
end.

Результат выполнения программы:
F(8)=24


(142k баллов)
0

F(1)=1 (по условию)

0

F(2)= F(2-1)+F(2/2)= F(1)+F(1)=1+1=2 F(3)=F(3-1)+F(3-2)=F(2)+F(1)=3 F(4)=F(4-1)+F(4/2)=F(3)+F(2)=5

0

F(5)= F(5-1)+F (5-2)=F(4)+F(3)=8, F(6)=F(6-1)=F(6/2)=F(5)+F(3)=8, F(7)=F(7-1)+F(7-2)=F(6)+F(5)=19, F(8)=F(8-1)+F(8/2)=F(7)+F(4)=19+5=24.

0

Как-то так)

0

Не понял...а я, выходит, не на Паскале запускал программу?

0

О...нашел....действительно ошибка, у меня F при копировании куда-то делось... должно быть F(n-1)+F(n div 2)

0

Кстати, да! Я заметил отсутствие F, когда проверял)

0

Ну оно в формуле есть и в программе было....почему пропало - непонятно совершенно... а я сначала копирую программу, потом еще раз её в буфер забираю и запускаю, чтобы убедиться, что все вставилось... а тут так пропало, что оказалось все равно синтаксически верно....(((

0

Bcghfdbk e;t

0

Исправил уже