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

use*_*164 5 math

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

x = 10;
for(int i=0; i<3000; i++)
{
    x = x^2
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ius 10

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

  • 所有的x ^ 6000答案都是错误的.确实(x ^ 2)^ 3000 == x ^ 6000.然而,这不是循环所说的.我很惊讶(而且非常失望)你是少数人正确阅读它. (3认同)

Jim*_*wis 6

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

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

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

  • 我认为你应该提供一定数量的道具,因为提到^不是C中的取幂.我认为大多数C编码器都不必编译它来解决这个问题.;)另外,我会说明你在OP明确表示他正在使用伪代码之前做了回答.我还要说明使用C的for循环和括号不是PSEUDOcode的最佳选择,这使你的混乱更容易理解. (2认同)

Gre*_*ill 6

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

A n = A n-1 2

如其他答案所示,为您的示例创建封闭式解决方案非常简单。通过对关系进行看似简单的更改,解决递归关系可能很快变得更加困难:

A n = A n-1 2 + c

根据c的值,这种非线性递归关系甚至可能没有闭合形式的解。(顺便说一句,当与复数一起使用时,上述递归关系是Mandelbrot集的核心。)