-3

早些时候我发布了第 1 部分并得到了一些有趣的回应

打印一系列数字优化第 1 部分

这是另一种方法,您可以让程序在屏幕上打印一系列重复的数字,这里的目标是制作最有效/最快的算法

int series[] = [2,3,4,5,6,7,8,9,1]
int i = 9;

while(true)
{
    print(series[i])
    i = series[i] - 1;
} 

当然忽略实际打印数字所产生的任何额外开销,因为这不是问题的目的

无论您执行哪种解决方案,都需要一个布尔条件语句(如果为真),则无限循环是必需的,因此您也可以忽略它

该解决方案将内存用于 11 个 int 变量,但除此之外,每次迭代只进行一次简单计算和一次变量分配。

那么这将是解决无限数列问题的最省时的方法吗?

4

1 回答 1

2

我会说这不是最有效的方法。

寻址数组涉及乘法。本质上是

destinationAddress = baseAddressOfArray + indexRequested * sizeof(elementOfArray)

我认为最有效的方法是缓存一次迭代的字符串,然后一遍又一遍地吐出该字符串。我不了解我的确切 C++ 语法,它类似于

string s = "123456789";
while(true) {
    print(s);
}
于 2011-05-03T01:20:18.480 回答