Pascal/Turbo Pascal - Como funciona este algoritmo de Recursion

   
Vista:

Como funciona este algoritmo de Recursion

Publicado por Leon1378 (4 intervenciones) el 16/11/2015 06:16:29
Hola gente!

Soy nuevo y necesito ayuda con recursion. Si alguien me pudiera explicar(traza o seguimiento) como funciona esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
program tp6;
function fibonacci (nro:integer):integer;
begin
	if (nro<=2) then
		fibonacci:=1
	else
		fibonacci:= fibonacci (nro-1)+ fibonacci (nro-2);
end;
 
var
nro,resultado:integer;
begin
	write ('ingrese nro: ');
	readln (nro);
	resultado:= fibonacci (nro);
	writeln (resultado);
end.


La verdad no entiendo como funciona ese algoritmo. Se los agradeceria mucho.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Como funciona este algoritmo de Recursion

Publicado por David (139 intervenciones) el 16/11/2015 16:04:33
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
program tp6;
 
{Devuelve el n£mero n-‚simo de la sucesi¢n de Fibonacci. Cada n£mero de dicha sucesi¢n es la suma de sus dos antecesores}
function fibonacci (nro:integer):integer;
 
{Para n=3: Primera llamada: fibonacci(3-1)+fibonacci(3-2)}
                      {Fibonacci(3-1)= fibonacci(1) -> como n<=2 fibonacci=1
                      fibonacci(3-2)=fibonacci(2) -> al igual que antes fibonacci=1
                        1+1 = 2 como efectivamente ocurre con la sucesi¢n de fibonacci. Lo que hace la funci¢n es llamarse a s¡ misma,
                        en eso consiste la recursividad, mientras n>2}
begin
 
	if (nro<=2) then
 
		fibonacci:=1
 
	else
 
		fibonacci:= fibonacci (nro-1)+ fibonacci (nro-2);
 
end;
 
 
 
var
 
nro,resultado:integer;
 
begin
 
	write ('ingrese nro: ');
 
	readln (nro);
 
	resultado:= fibonacci (nro);
 
	writeln (resultado);
 
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como funciona este algoritmo de Recursion

Publicado por ramon (2072 intervenciones) el 21/11/2015 11:06:29
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
{Mira estas formas }
 
program ejemplo_fibonacci;
uses
    crt;
 var
   bb, val1, num : longint;
   count : integer;
 
  Function fibonacci_recursivo(n : LongInt) : LongInt;
  begin
    if n <= 1 then
    fibonacci_recursivo := 1
  else
    fibonacci_recursivo := fibonacci_recursivo(n - 1) +
                           fibonacci_recursivo(n - 2);
  end;
 
  function Fibonacci_norecursivo(n : longint) : longint;
  var
    i   : longint;
    f1, f2, f3 : longint;
  begin
     if n <= 1 then
     begin
       Fibonacci_norecursivo := 1;
     end;
        f3 := 1;
        f1  := 1;
        f2  := 1;
     for i := 2 to n do
     begin
        f3 := f1 + f2;
        f2 := f1;
        f1 := f3;
     end;
       Fibonacci_norecursivo := f3;
   end;
 
 
 
  begin
    clrscr;
    count := 0;
    Write('    Numero : ');
    readln(count);
    if count > 35 then
    count := 35;
    writeln;
    writeln('    ',fibonacci_recursivo(Count));
    writeln;
    writeln('    ',Fibonacci_norecursivo(Count));
    readkey;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar