재귀 대 피보나치 시퀀스의 시간을 측정하기 위해 실험을 실행했습니다. 재귀 적 메서드의 성능을 향상시키는 더 좋은 방법이 있습니까?재귀 검색 최적화
require 'benchmark'
def fibonacci_iterative(n)
fib_numbers = [0, 1]
iterate = n-1
iterate.times do
number = fib_numbers[-2] + fib_numbers[-1]
fib_numbers << number
end
p fib_numbers[-1]
end
def fibonacci_recursive(n)
fib_number = 0
if n == 0 || n == 1
n
else
fib_number = fibonacci_recursive(n - 1) + fibonacci_recursive(n - 2)
end
end
puts Benchmark.measure {fibonacci_iterative(5)}
puts Benchmark.measure {fibonacci_recursive(5)}
5
0.000000 0.000000 0.000000 ( 0.000037)
0.000000 0.000000 0.000000 ( 0.000005)
puts Benchmark.measure {fibonacci_iterative(45)}
puts Benchmark.measure {fibonacci_recursive(45)}
1134903170
0.000000 0.000000 0.000000 ( 0.000039)
378.990000 0.330000 379.320000 (379.577337)
이것은 재귀의 고유 한 기능입니까?
@DavidNehme 예제는 Ruby가 아니라 Java입니다. –