系统:Ubuntu 14
IDE:PyCharm社区版3.1.1
Python:2.7.6
具有重复调用的算法:
def fibonacci_dynamic(n):
if n == 0:
return 0
if n == 1:
return 1
computed_values = {1: 1, 2: 1}
return memoize(n, computed_values)
def memoize(n, computed_values):
if n in computed_values:
return computed_values[n]
#recurrent call
computed_values[n - 1] = memoize(n - 1, computed_values)
computed_values[n - 2] = memoize(n - 2, computed_values)
new_value = computed_values[n - 1] + computed_values[n - 2]
computed_values[n] = new_value
return new_value
测试:
from unittest import TestCase
from first.fib.fibonacci import fibonacci_dynamic
import sys
sys.setrecursionlimit(40000)
class TestFibonacci_dynamic_param(TestCase):
def test_fibonacci_dynamic_26175(self):
result = fibonacci_dynamic(26175)
self.assertIsNotNone(result)
测试中的值是有意的。围绕值26175
测试有时通过,但有时会以消息终止:
Process finished with exit code 139
我知道测试结果在某种程度上取决于硬件资源,但我想从stackoverflow的资深人士那里得到更精确的答案:)
可以使用非递归算法计算斐波那契数
或者使用公式:
相关问题 更多 >
编程相关推荐