此功能编程优化称为什么?

问题描述 投票:0回答:1

考虑以下用于计算第n个斐波那契数的Haskell代码。

fib :: Int -> Int
fib 0 = 0
fib 1 = 1
fib n = fib (n - 1) + fib (n - 2)

此代码很慢。我们可以通过重构为“迭代地”计算的辅助函数,通过“存储”所有相关数据以在其参数中计算递归以及“告诉我们计算所需时间的”“计数器”来优化它。

fastfib :: Int -> Int
fastfib n = helper 1 0 n
  where
    helper a _ 1 = a
    helper a b i = helper (a + b) a (i - 1)

似乎这种优化也可以更广泛地应用。在函数式编程社区或其他地方是否有名称?

考虑以下用于计算第n个斐波那契数的Haskell代码。 fib :: Int-> Int fib 0 = 0 fib 1 = 1 fib n = fib(n-1)+ fib(n-2)此代码很慢。我们可以通过...

haskell optimization functional-programming recurrence
1个回答
0
投票

是,这称为accumulating argument技术。 (我链接到有关它的答案之一)。

© www.soinside.com 2019 - 2024. All rights reserved.