[英]Pycharm - Running Open CV Code goes straight to “Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)”
[英]Python recursion test in PyCharm - Process finished with exit code 139
系統: Ubuntu 14
IDE: PyCharm 社區版 3.1.1
蟒蛇: 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 前輩的更准確的答案:)
您可以使用非遞歸算法來計算斐波那契數
class FibonacciNumbers(object):
def __init__(self):
self._fib = [0, 1, 1] #first three fibonacci numbers
def get(self, n):
if n < len(self._fib):
return self._fib[n]
for i in xrange(len(self._fib), n+1):
self._fib.append(self._fib[i-1] + self._fib[i-2])
return self._fib[-1]
fib = FibonacciNumbers()
print fib.get(0)
print fib.get(1000)
或者使用公式:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.