Задача 5 Урок 20
Primary tabs
Пользователь получает на вход целое положительное число N напишите рекурсивную функцию, которая вернет число Фиббоначи стоящии под этим номером
var N,b,a,k : integer;
function Num(N,b,a,k: integer) : integer;
var c: integer;
begin
k := k + 1;
if(N = 1) then
write(0)
else if((N = 2) or (N = 3)) then
write(1)
else
begin
c := b;
b := a + b;
a := c;
if (k < N) then
Num(N, b, a, k)
else
write(a + b,' ');
end;
end;
begin
readln(N);
a := 0;
b := 1;
k := 3;
Num(N,b,a,k);
readln;
end.
- Log in to post comments
- 2896 reads
vedro-compota
Sun, 10/03/2021 - 12:45
Permalink
1) уменьшить количество
1) уменьшить количество агрументов
+ под сомнением вот это:
_____________
матфак вгу и остальная классика =)
jl8qy9kd_pro
Thu, 10/07/2021 - 17:48
Permalink
RE
var N,b,a : integer; function Num(N,b,a: integer) : integer; var c: integer; begin if(N = 1) then write(0) else if(N = 2) then write(1) else if (N > 3) then begin c := b; b := a + b; a := c; Num((N-1),b,a); end else begin b := a + b; writeln(b); end; end; begin readln(N); b := 1; a := 0; Num(N,b,a); readln; end.vedro-compota
Sun, 10/10/2021 - 12:55
Permalink
попробовать использовать
попробовать использовать решение http://fkn.ktu10.com/?q=node/13493 для функции с одним аргументом (может получится сократить число аргументов в этой задаче)
_____________
матфак вгу и остальная классика =)
jl8qy9kd_pro
Sun, 10/17/2021 - 12:11
Permalink
RE
var n: integer; function numFib(n: integer): integer; begin if (n = 0) then result: = 0 else if(n = 1) or (n = 2) then result: = 1 else result := numFib(n - 1) + numFib(n - 2) end; begin readln(n); writeln(numFib(n)); readln(); end.vedro-compota
Sun, 10/17/2021 - 12:41
Permalink
засчитано
засчитано
_____________
матфак вгу и остальная классика =)