谁能帮我弄清楚该算法的作用?

时间:2018-07-06 08:28:04

标签: algorithm math

我在这里有此算法:

sumup(int n) {
    int s = ???, k = 0;
    while(k != n) {
        k = s*(2*k-1)*(2*k-1);
        s = k;
    }
    return s;
}

我需要找出它的目的是什么。它似乎甚至不适用于大多数数字,并且一旦完成,它还是会再次返回n
有人知道这个算法用于什么吗? 我以为它是平方根的,但实际上似乎都不行。

1 个答案:

答案 0 :(得分:0)

在for循环结束时,sk相等。在下一次迭代之前,请检查k != n。这等效于s != n。因此循环将一直运行到s == n成立,然后返回n为止。因此该函数获取输入n,运行一段时间并最后返回n

问题是:

  1. 它终止了吗?在什么条件下?
    仅当sn配合在一起时。例如。如果0 < n < s成立,算法将不会终止。
  2. 如果终止需要多长时间?
    k0初始化,并在第一次迭代后成为s的值。从那里基本上每次迭代都将其立方化。解决s^(3^x) = n会导致Θ(log log n)的复杂性。