
Pour le cas de Ruby, je peux déjà répondre à la question de la vitesse d'exécution sur le cas trivial de la fonction factorielle grâce à ce petit benchmark :
# Benchmark : recursive vs iterative
# on factorial function
# Recursive version
def factor_rec num
if num == 0
1
else
factor_rec(num-1)*num
end
end
# Iterative version
def factor_iter num
res = 1
(1..num).each do |i|
res *= i
end
res
end
# Benchmark
require 'benchmark'
Benchmark.bm(9) do |timer|
timer.report('Recursive') {
for i in (0...1000)
factor_rec i
end
}
timer.report('Iterative') {
for i in (0...1000)
factor_iter i
end
}
end
#=>
# user system total real
#Recursive 4.266000 0.062000 4.328000 ( 4.328000)
#Iterative 3.312000 0.016000 3.328000 ( 3.360000)
0 commentaires:
Enregistrer un commentaire