因此,我在一本悖论的书中读书:说你在一个房间里,对面的门。为了离开,您必须每次都在那里走一半的距离。因此,您的第一次大步走了一半的距离,第二阶段的步幅是您再次走的一半,依此类推(1/2 + 1/4 + 1/8)等像这样。我猜这很容易证明使用微积分,但是在Java或任何其他节目中都以左侧开始的球模拟它会很有趣,并通过每次距离一半的距离向右侧走向右侧,在显示到目前为止采取的“步骤”及其进度的同时。我很想自己做,但我仍然是Java的初学者,不知道GUI编程。谁能模拟这个?

(对不起,如果这不是一个“真实”的问题。我真的很好奇球要花多少个步骤,甚至看起来几乎就在那里。)

有帮助吗?

解决方案

请参阅该图,可视化悖论:

http://www.wolframalpha.com/input/?i=1-1/(2^n)+for+0<n<10

其他提示

在遇到另一扇门之前,您将遇到数字限制。抽象是:

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.960464775391E-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.547473508646E-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.220460492503E-14
1.1102230246252E-14
5.551151231258E-15

Java中的一些数值分析。看一下

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

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

如果您想在C ++中执行此操作,则是代码:

float Distance;

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

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


return 0;

}

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top