gpt4 book ai didi

optimization - 如何编写通用的内存功能?

转载 作者:行者123 更新时间:2023-12-03 15:30:48 24 4
gpt4 key购买 nike

我正在编写一个函数来查找 triangle numbers并且编写它的自然方式是递归的:

function triangle (x)
if x == 0 then return 0 end
return x+triangle(x-1)
end

但是尝试计算前 100,000 个三角形数失败,一段时间后堆栈溢出。这是 memoize 的理想功能,但我想要一个可以记住我传递给它的任何函数的解决方案。

最佳答案

我敢打赌,这样的事情应该适用于 Lua 中的可变参数列表:

local function varg_tostring(...)
local s = select(1, ...)
for n = 2, select('#', ...) do
s = s..","..select(n,...)
end
return s
end

local function memoize(f)
local cache = {}
return function (...)
local al = varg_tostring(...)
if cache[al] then
return cache[al]
else
local y = f(...)
cache[al] = y
return y
end
end
end

您可能还可以使用带有 __tostring 的元表做一些聪明的事情,以便可以使用 tostring() 转换参数列表。哦,可能性。

关于optimization - 如何编写通用的内存功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/129877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com