Срочно! Pascal
Напишите рекурсивную процедуру нахождения первых N чисел Фибоначчи. Каждое число Фибоначчи равно сумме двух предыдущих чисел при условии, что первые два равны 1 (1, 1, 2, 3, 5, 8, 13, 21,...).
Ответы на вопрос
Ответил Аноним
0
// PascalABC.NET 3.3, сборка 1634 от 14.02.2018
// Внимание! Если программа не работает, обновите версию!
procedure Fib(n:integer; var r:sequence of integer);
begin
if n<1 then exit; // нечего глупости задавать
case n of
1: r:=Seq(1);
2: r:=Seq(1,1);
else begin
r:=Seq(1,1);
var (p1,p2):=(1,1);
var p:integer;
loop n-2 do begin
p:=p1+p2;
r:=r+Seq(p);
(p1,p2):=(p2,p)
end
end
end
end;
begin
var s:sequence of integer;
var n:=ReadInteger('n=');
Fib(n,s);
s.Println
end.
Пример
n= 8
1 1 2 3 5 8 13 21
// Внимание! Если программа не работает, обновите версию!
procedure Fib(n:integer; var r:sequence of integer);
begin
if n<1 then exit; // нечего глупости задавать
case n of
1: r:=Seq(1);
2: r:=Seq(1,1);
else begin
r:=Seq(1,1);
var (p1,p2):=(1,1);
var p:integer;
loop n-2 do begin
p:=p1+p2;
r:=r+Seq(p);
(p1,p2):=(p2,p)
end
end
end
end;
begin
var s:sequence of integer;
var n:=ReadInteger('n=');
Fib(n,s);
s.Println
end.
Пример
n= 8
1 1 2 3 5 8 13 21
Ответил Аноним
0
Хотя... можно сделать иначе
Ответил Аноним
0
Вот, теперь правильнее, все по условию.
Новые вопросы
Оʻzbek tili,
2 года назад
Биология,
2 года назад
Алгебра,
8 лет назад
Математика,
8 лет назад
Математика,
9 лет назад