What would happen if a great warrior and a small tortoise were to race? According to Zeno of Elea, the Greek mathematician and philosopher of the 5th century BC, the warrior would never catch the tortoise — at least according to the logic of his famous paradox. And yet common sense tells us the opposite. Here’s how mathematics resolved the dilemma after nearly two thousand years of debate.
The Paradox
“The brave Achilles and the small tortoise decide to have a race. Achilles, confident of winning, decides to give the tortoise a generous head start. How could the great warrior ever lose to the small, slow animal? The tortoise sets off and Achilles waits. Only after some time does brave Achilles give chase. Achilles, every minute, halves the distance separating him from the tortoise… will the hero ever catch his opponent?”
If you had asked Zeno this question, he would have calmly answered no.
The reasoning is this: imagine the distance between Achilles and the tortoise as a whole number that you keep dividing by two at each interval. The result, however small, will never equal zero — it will always be a smaller decimal number, to infinity.
Where Zeno Was Wrong
Zeno concluded that the sum of infinite quantities gives an infinite value:
1/2 + 1/4 + 1/8 + 1/16 + … = infinity?
The error lies precisely here. Zeno believed that the sum of infinite quantities must necessarily give an infinite result. As calculus demonstrates, this is not the case. Given x = 1/2:
(1-x)(x¹ + x² + x³ + …) = x − x^(n+1)
Therefore: x¹ + x² + x³ + … = (x − x^(n+1)) / (1−x)
If x = 1/2, the sum converges to: (1/2) / (1/2) = 1
The time taken by Achilles is therefore finite. We can treat it as a simple kinematics problem.
The Numerical Solution
- Initial Achilles–Tortoise distance: 1000 metres
- Achilles’s speed: 10 m/s
- Tortoise’s speed: 1 m/s
The distance covered by Achilles (10t) must equal the initial head start plus the distance covered by the tortoise:
10t = 1000 + t → 9t = 1000 → t = 111.1 seconds
Good old Achilles catches the tortoise in just under two minutes. Zeno, after two thousand years, can finally sleep easy.
The C# Implementation: The Paradox on a Computer
The following program simulates the race using a recursive algorithm in C#. The interesting aspect is that no real machine can represent Zeno’s paradox literally: the distance keeps getting smaller, but at a certain point the variable reaches the precision limit of the data type… and Achilles catches the tortoise. Try changing the type of the distance variable (from decimal to double or float) and observe how the behaviour changes.
using System;
namespace ZenoInCSharp
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
decimal x = 1000;
Console.WriteLine("Achilles and the Tortoise: an implementation of Zeno's Paradox.n");
Zeno(ref x);
}
static public int min = 0;
static void Zeno(ref decimal x)
{
if (x > 0)
{
Console.WriteLine("Achilles is " + x + " metres from the tortoise after " + min + " minutes.");
Console.WriteLine("(Press Enter)");
Console.ReadLine();
x = x / 2;
min++;
Zeno(ref x);
}
else
{
Console.WriteLine("Achilles catches the tortoise in " + min + " minutes.");
Console.WriteLine("We have a FINITE amount of memory to store the distance.");
Console.WriteLine("Otherwise, by virtue of the paradox, the tortoise would win the race.");
Console.ReadLine();
}
}
}
}
Article originally published on itvirtualcommunity.net (2004), rewritten and updated in 2012.







