Codigos I

Estos son los códigos de la primera comparativa.



RECURSIVO

Códigos

#include
long int llamadas=0;
int fibonacci(int n) {
llamadas++;
if (n==0 | n==1)
return 1;
else
return fibonacci(n-1) + fibonacci(n-2);
}

main() {
int i;

for (i=0; i<33;i++)>
printf("%d \n", llamadas);
}

#!/usr/bin/ruby
$llamadas=0
def fibonacci(n)
$llamadas+=1
return 1 if n==1 or n==0
fibonacci(n-1)+fibonacci(n-2)
end

33.times { |num| puts fibonacci(num).to_s }
puts $llamadas.to_s

#!/usr/bin/perl
$llamadas=0;
sub fibonacci {
$llamadas++;
my $n = shift;
return 1 if ( $n == 0 or $n == 1 );
return fibonacci( $n-1 ) + fibonacci( $n-2 );
}
for ($num=0; $num < 33; $num++) {
print fibonacci($num) ."\n";
}
print $llamadas."\n";

#!/usr/bin/python
llamadas=0
def fib(n):
global llamadas
llamadas+=1
if n == 0:
return 1
elif n == 1:
return 1
else:
return fib(n-1) + fib(n-2)

for i in range(33):
print fib(i)
print llamadas

ITERATIVO

Códigos

#include
int fib (int n)
{
if (n==0 | n==1) return 1;
int a = 1, b = 1;
int i;
for (i = 3; i <= n; ++i) {
int a_prev = a;
a = b;
b += a_prev;
}
return b;
}

main() {
int i;
for (i=0; i<34;i++) printf("%d \n", fib(i));

}

#!/usr/bin/python
def fib(n):
a, b = 1, 1
for i in range(n):
a, b = b, a + b
return a

for i in range(33):
print fib(i)

#!/usr/bin/ruby
def fibonacci(n)
curr = 1
succ = 1
n.times do |i|
curr, succ = succ, curr + succ
end
return curr
end
33.times { |num| puts fibonacci(num).to_s }

#!/usr/bin/perl -w
sub fibonacci
{
my ($n, $a, $b) = (shift, 1, 1);
($a, $b) = ($b, $a + $b) while $n-- > 0;
$a;
}
for ($num=0; $num < 33; $num++) {
print fibonacci($num) ."\n";
}




No hay comentarios: