日期:2014-05-18  浏览次数:20454 次

转过来一道逻辑问题,挺有意思的
http://community.csdn.net/Expert/topic/5673/5673295.xml?temp=.7943537
主  题:     也搞一个逻辑问题,大家看看谁能很快回答上来    
作  者:     gameboxer   ()    
等  级:        
信   誉   值:     100    
所属社区:     .NET技术   非技术区    
问题点数:     20    
回复次数:     18    
发表时间:     2007-7-24   22:48:56    

这是我进一个公司时的面试题,当初没打上来(答了,但回答错了),可能由于紧张过度?废话少说,大家看题,看谁可以很快回答出来。
一个100层的高楼,已知从某一层楼开始往下抛一枚棋子,棋子会摔碎。现在给你两枚这样的棋子,不考虑爬楼,下楼拣棋子等过程,用一个好的方案,快速的把恰好能摔碎棋子的楼层找到(答案应该好猜,推理过程就显得比较重要了)。



------解决方案--------------------
从下一层一层试,省一枚棋子


棋子金子做的吧?

------解决方案--------------------
靠...我还是没能在sql中写个递归了...郁闷...无比.

不过在c#到写了一个.
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
for(int i=0;i <100;i++)
{
if(f(i)> 100&f(i-1) <100)
{
Console.WriteLine(i);
break;
}
}
Console.WriteLine(f(14).ToString());
Console.ReadLine();
}

static int f(int i)
{
if(i <=0) return 0;
else return f(i-1)+i;
}
可以得到开始应该先从14楼开始仍...然后也简单了...在没坏之前每次仍都要比之前的数少1,这样,坏了,再一楼一楼的仍...最多14步...

依稀记得的.以前看过这样的题.