Я последовал за 30 первых минут тренировки FreeCodeCamp по имени Динамическое программирование для начинающих – как решать проблемы кодирования с воспоминанием и табликой Отказ
Первая часть заключается в том, что эффективность программирования и времени, но и о ресурсах инфраструктуры.
Обучение показывает примеры JavaScript, но я переехал в Python ♥ ️.
Код:
def fib(n): if n == 0: return 0 if n == 1: return 1 return fib(n - 1) + fib(n - 2) print('The first 50 fibonacci numbers are:') print(','.join([str(fib(n)) for n in range(50)]))
Это занимает слишком много ресурсов ЦП, и он даже не закончен:
Переехать в:
def fib(n, memo={}): if n in memo: return memo[n] if n == 0: return 0 if (n <= 2): return 1 memo[n] = fib(n - 1, memo) + fib(n - 2, memo) return memo[n] print('The first 50 fibonacci numbers are:') print(','.join([str(fib(n)) for n in range(50)]))
Занимает менее секунды, чтобы бежать и практически без ресурсов ЦП:
real 0m0.156s user 0m0.075s sys 0m0.059s
Оригинал: “https://dev.to/imjoseangel/from-100-to-0-cpu-with-memoization-2pca”