今天在某个群里看到一个悖论的故事,看似很费解,其实用代码来表示就是很简单的事。
一警察抓住一贼,准备枪毙他,警察故意调侃说:“你猜我会不会枪毙你,猜对了就放你,猜错了就杀你”。 贼吓的直流汗,突然贼灵机一动说:“你会枪毙我”。警察茫然了 ,不得不放人。
bool 是否猜对= false;
public void 枪毙(贼 某人)
{
if(某人.message == 枪毙)
{
是否猜对 = 是;
放走(某人);
}
else
{
是否猜对 = 否;
枪毙(某人)
}
}
public void 放走(贼 某人)
{
if(某人.message == 枪毙)
{
是否猜对 = 否;
枪毙(某人);
}
else
{
是否猜对 = 是;
放走(某人)
}
}
public void 枪毙(贼 某人)
{
if(某人.message == 枪毙)
{
是否猜对 = 是;
放走(某人);
}
else
{
是否猜对 = 否;
枪毙(某人)
}
}
public void 放走(贼 某人)
{
if(某人.message == 枪毙)
{
是否猜对 = 否;
枪毙(某人);
}
else
{
是否猜对 = 是;
放走(某人)
}
}
警察.枪毙(某人)
警察.放走(某人)
最后都是无限循环:死机,内存溢出
警察.放走(某人)
最后都是无限循环:死机,内存溢出