Задание 5 Урок 22

Задание 5 Урок 22

Пользователь получает на вход целое положительное число N напишите рекурсивную процедуру, которая выведет все числа Фиббоначи от первого до N-ого

var
  N, i :integer ;

function fib(n :integer):integer;
begin
  if (n = 1) then
  begin
    result := 0
  end
  else if (n = 2) then
  begin
    result := 1
  end
  else
  begin
    result :=  fib(n-1) + fib(n-2);
  end;
end;

begin
    writeln('Vvedite chislo');
    readln(N);
    writeln('chislo Fibonacchi ravno: ');
    for i:=1 to N do
      writeln(fib(i));
    readln();
end.  

консоль:

Vvedite chislo
10
chislo Fibonacchi ravno: 
0
1
1
2
3
5
8
13
21
34
vedro-compota's picture

здесь скорее всего подразумевается, что процедура сама и должна выводить эти значения, т.е. цикла в теле программы быть не должно

_____________
матфак вгу и остальная классика =)

.

так?

var
  N, fib1, fib2 :integer ;

procedure printFib(fib1, fib2, n: integer);
begin
  if not (n = 0) then
  begin
    writeln(fib1);
    printFib(fib2, fib1+fib2, n-1);
  end;
end;

begin
  fib1 := 1;
  fib2 := 1;
  writeln('Vvedite chislo');
  readln(N);
  writeln('Chisla Fibbonachi: ');
  printFib(fib1, fib2, N);
  readln();
end. 
Vvedite chislo
11
Chisla Fibbonachi: 
1
1
2
3
5
8
13
21
34
55
89