如何将这个for循环翻译成数学语言

5

我试图解决一个看起来很简单的数学问题。我可以用for循环来写这个问题,但是我不知道如何将其转化为一个方程式。有人能帮忙吗?

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

1
抱歉,我应该说明一下,以上是伪代码。这不是一个编程问题,所以我不担心溢出的问题 :) 实际上,我正在尝试手动解决一个数学问题。我知道如何用代码表达这个问题,但不知道如何用数学语言来表达。感谢大家的帮助。 - user113164
6个回答

10

x^(2^3000) 表示 x 的 2 的 3000 次方


3
所有x^6000的答案都是错误的。虽然(x^2)^3000 == x^6000是正确的,但这并不是这个循环要表达的意思。我对你们少数人能正确理解它感到惊讶(而且有点失望)。 - John Y

6

您提供了代码,并要求我们提供数学等价物 - 所以我将按照字面意思解释您的代码,并假设它是类似于C语言的语言。

在这种环境中,^ 是按位异或运算符。因此,在循环之后,x = 10,因为它与常量2进行了异或操作(切换次低位比特),偶数次。

或者这只是伪代码 - 您真的是指幂运算吗?


P.S. 我是唯一一个编译这个程序并看到它做了什么的人吗? - Jim Lewis
2
我认为你提到在C语言中^不是指数运算应该得到一定的赞扬。不过,我想大多数C程序员不需要编译就能弄清楚这一点。;)此外,我要声明的是,在问题提出者澄清他在使用伪代码之前,你已经给出了答案。我还要声明的是,在使用C的for循环和花括号书写伪代码并不是最好的选择,这让你的困惑更加可以理解。 - John Y

6
你所给出的问题的数学名称是递归关系。递归关系用前面的项An-1,An-2等来定义序列An。在你的情况下,

An = An-12

正如其他答案所示,为你提供的示例创建闭式解是直截了当的。通过对关系进行看似简单的更改,求解递归关系可能会变得更加困难:

An = An-12 + c

这样的非线性递归关系可能没有闭式解,这取决于c的值。(顺便说一句,当与复数一起使用时,上述递归关系是曼德博集合的核心。)

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

等同于:

x = x^(p^n)

0

某个值(在您的情况下为10)将被平方3000次。


-3
给定它是一个常量,怎么样只需要这样
x = 10000000... (etc.)

但我猜你想要更有意义的东西:

x = 10^6000

甚至更多:
x = (10^2)^3000

或者(如果您允许稍微宽松的符号表示):

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

在“...”下方横向放置“} 3000”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接