你如何将这个循环转化为数学

时间:2009-08-19 02:09:24

标签: math

我正试图解决看似简单的数学问题。我可以将问题写成for循环,但我不确定如何将其转换为等式。有人可以帮忙吗?

x = 10;
for(int i=0; i<3000; i++)
{
    x = x^2
}

6 个答案:

答案 0 :(得分:10)

x ^(2 ^ 3000)其中^表示

的力量

答案 1 :(得分:6)

你提供了代码,并且要求我们提供数学等价物 - 所以我将逐字地理解你的代码,并假设它是一种类似C的语言。

在该环境中,^是按位XOR运算符。因此,在循环x = 10之后,由于它与常数2(切换下一个到LSB位)进行异或运算偶数次。

或者这只是伪代码 - 你真的是指取幂吗?

答案 2 :(得分:6)

您提供的问题类别的数学名称为recurrence relation。递归关系根据前面的术语A n-1 ,A n-2 等定义序列A n 。在您的情况下,

  

n = A n-1 2

正如其他答案所示,为您的示例创建closed-form solution非常简单。通过看似简单的关系变化,解决递归关系很快就会变得更加困难:

  

n = A n-1 2 + c

这种非线性递归关系甚至可能没有封闭形式的解决方案,具体取决于 c 的值。 (顺便提一下,当使用复数时,上述递归关系是Mandelbrot set的核心。)

答案 3 :(得分:4)

for(int i=0; i<n; i++)
    x = x^p

相当于:

x = x^(p^n)

答案 4 :(得分:0)

某些东西(在你的情况下原始值为10)将被平方3000次。

答案 5 :(得分:-3)

鉴于它是一个常数,如何

x = 10000000... (etc.)

但我怀疑你想要更强烈的内容:

x = 10^6000

甚至更多:

x = (10^2)^3000

或(如果你允许略微宽松的表示法):

x = (10^2) ... ^2

在“......”下面有一个水平的“} 3000”。