举个简单的例子,假设我们正在检查 a 是否char c
是字母数字:
if (48 <= c && c <= 57 ||
65 <= c && c <= 90 ||
97 <= c && c <= 122)
{
// ...
}
6 操作确认是。
但是,不存在连续函数f(c)使得f(c) > 0表示字母数字字节值,而< 0表示其余部分?我认为至少有一个:12 次多项式,“适合” 12 个点,在 x 轴上上下摆动;但也许也存在一个更小次数的函数,甚至是非多项式。这样的公式将“简化”以下操作:
if (f(c) > 0)
{
// ...
}
这有艺术术语吗?(想到“折叠”这个词,但它不会产生任何相关的搜索结果——只有 Haskell 的折叠概念。)似乎只要我们可以将一组操作的 codomain 映射到一个足够精细的 codomain粒度,我们可以得到这样的“折叠”。那么,我的问题是:“折叠”可以节省时间吗?或者是否有一些守恒原则迫使计算“折叠”的成本匹配(甚至超过)计算原始“粗略”操作的成本。