Урок 22 Задача 5
Primary tabs
Пользователь получает на вход целое положительное число N напишите рекурсивную процедуру, которая выведет все числа Фиббоначи от первого до N-ого
Есть вопрос. Существует ли вариант решения, чтобы переменные a, b и с объявлялись в теле процедуры, а не входили по ссылке? Когда я пробовал их там объявить, то при раскрутке рекурсии их значения сбрасывались до начального уровня, а не сохранялись, как показано в программе.
var
a, b, c, n: integer;
procedure fibonachi(var a, b, c: integer; n: integer);
begin
if n > 1 then
fibonachi(a, b, c, n-1);
writeln(n, ') ', a);
c := a;
a := a + b;
b := c;
end;
begin
writeln('Введите число: ');
readln(n);
a := 1;
b := 0;
fibonachi(a, b, c, n);
readln();
end. - Log in to post comments
- 2041 reads
vedro-compota
Wed, 07/12/2023 - 20:37
Permalink
попробуем решить без обратной
попробуем решить без обратной раскрутки - сразу печатая значения (и без передачи по ссылки), можно завести доп. счетчик
_____________
матфак вгу и остальная классика =)
piliugin
Mon, 07/17/2023 - 18:11
Permalink
Решение без обратной
var a, b, c, n, k: integer; procedure fibonachi(a, b, c, k, n: integer); begin writeln(k, ') ', a); c := a; a := a + b; b := c; if n > k then fibonachi(a, b, c, k+1, n); end; begin writeln('Введите число: '); readln(n); a := 1; b := 0; k := 1; fibonachi(a, b, c, k, n); readln();readln(); end.vedro-compota
Mon, 07/17/2023 - 19:53
Permalink
переменная c может быть
переменная c может быть перенесена в группу локальных для функции
_____________
матфак вгу и остальная классика =)
piliugin
Wed, 07/19/2023 - 16:59
Permalink
Исправлено
var a, b, n, k: integer; procedure fibonachi(a, b, k, n: integer); var c: integer; begin writeln(k, ') ', a); c := a; a := a + b; b := c; if n > k then fibonachi(a, b, k+1, n); end; begin writeln('Введите число: '); readln(n); a := 1; b := 0; k := 1; fibonachi(a, b, k, n); readln();readln(); end.