Skip to content

Instantly share code, notes, and snippets.

@corroded
Forked from Kevin-Kawai/fibonacci.rb
Created September 13, 2017 14:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save corroded/d10a67a0bbbe556926497fc2e4aaf1aa to your computer and use it in GitHub Desktop.
Save corroded/d10a67a0bbbe556926497fc2e4aaf1aa to your computer and use it in GitHub Desktop.
require 'benchmark'
def it_fibonacci(n)
fib_arr = [0,1]
(2..(n.to_i) - 1).each do |x|
fib_arr << fib_arr[x-1] + fib_arr[x-2]
end
return fib_arr
end
def rec_fibonacci(n,arr=[])
size = arr.length
return arr if n == 0
return rec_fibonacci(n-1,[0]) if arr.empty?
return rec_fibonacci(n-1,[0,1]) if size == 1
return rec_fibonacci(n-1,arr << (arr[size - 2] + arr[size - 1]))
#return 1 if n == 1
#return 0 if n < 0
#return rec_fibonacci(n-1) + rec_fibonacci(n-2)
end
num = 10000
i_arr = it_fibonacci(num)
r_arr = rec_fibonacci(num)
puts i_arr.last
puts i_arr.length
puts "*****"
puts r_arr.last
puts r_arr.length
puts it_fibonacci(num) == rec_fibonacci(num)
=begin
num = 1000
Benchmark.bm do |x|
x.report("Iterative") { it_fibonacci(num) }
#x.report("Recursive") { rec_fibonacci(num) }
end
=end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment