1

所以我在读一本关于某个悖论的书:假设你在一个对面有门的房间里。但是,为了离开,您每次都必须走一半的距离。所以第一步你走一半的距离,第二步你再走一半,依此类推(1/2 + 1/4 + 1/8)等等。声称如果你继续前进,你永远不会到达门口像这样。我想这很容易用微积分来证明,但是在 Java 或任何其他程序中用一个从左侧开始的球来模拟这一点会很有趣,每次通过一半的距离移动到右侧,同时显示到目前为止采取的“步骤”数量及其进度。我很想自己做,但我仍然是 Java 的初学者,不知道 GUI 编程。任何人都可以模拟这个吗?

(对不起,如果这不是一个“真正的”问题。我真的很好奇需要多少步才能让球看起来几乎就在那里。)

4

5 回答 5

4

看这个图,它可视化了悖论:

http://www.wolframalpha.com/input/?i=1-1/(2^n)+for+0<n<10
于 2010-11-08T21:24:25.397 回答
3

在您撞到另一扇门之前,您将遇到人数限制。抽象为:

var Distance=100;
var Traveled=0;
var Remaining=Distance/2

while(Traveled < Distance){
  echo Remaining
  Traveled=Traveled+Remaining
  Remaining=Remaining/2

}

对使用PHP导致我的箱子一个运行此..
50
25
12.5
6.25
3.125
1.5625
0.78125
0.390625
0.1953125
0.09765625
0.048828125
0.0244140625
0.01220703125
0.006103515625
0.0030517578125
0.00152587890625
0.000762939453125
0.0003814697265625
0.00019073486328125
9.5367431640625E-5
4.7683715820312E-5
2.3841857910156E-5
1.1920928955078E-5
5.9604644775391E -6
2.9802322387695E-6
1.4901161193848E-6
7.4505805969238E-7
3.7252902984619E-7
1.862645149231E-7
9.3132257461548E-8
4.6566128730774E -8-
2.3283064365387E -8-
1.1641532182693E -8-
5.8207660913467E-9
2.9103830456734E-9
1.4551915228367E -9-
7.2759576141834E-10
3.6379788070917E-10
1.8189894035459E-10
9.0949470177293E-11
4.5474735088646E-11
2.2737367544323E -11
1.1368683772162E-11
5.6843418860808E-12
2.8421709430404E-12
1.4210854715202E-12
7.105427357601E-13
3.5527136788005E-13
1.7763568394003E-13
8.8817841970013E-14
4.4408920985006E-14
2.2204460492503E-14
1.1102230246252E-14
5.5511151231258E-15

于 2010-11-08T21:26:43.737 回答
1

java中的一些数值分析。看看这个

于 2010-11-08T21:16:39.910 回答
0

这是芝诺的悖论之一。 这取决于您对“几乎”的定义是什么。从足够远的有利位置看,无论实际距离是多少,它看起来几乎就在那里。

至于执行此操作的程序,您的问题太广泛了-它可以通过多种方式实现。关键元素是将球到墙壁的距离更新为前一个“帧”或迭代中的一半。

于 2010-11-08T21:16:32.970 回答
0

如果您想在 C++ 中执行此操作,请使用以下代码:

float Distance;

cout << " Enter distance value :" << endl;
cin >> Distance;

while (Distance > 0){
    cout << Distance << endl;
(Distance = Distance /2);
}


return 0;

}

于 2013-07-29T18:27:52.567 回答