题目:话说有1000个瓶子,其中999瓶水,1瓶有毒,外观没有任何区别。现在有10只小白鼠和无限多的干净试管,如何找出那瓶毒药?
知识点:就是二分法的应用
分析:由于2^10 > 1000,因此可以这样解决:
第一次:任意拿出500瓶混合到一支试管中,拿一只小白鼠试吃,两种结果,有毒鼠死,无毒鼠活;无论结果如何,都可以判断出毒药在哪500瓶中;最多耗费第一只小白鼠;2
第二次:将有毒的500瓶分成250瓶一份,拿一只小白鼠试吃,两种结果,有毒鼠死,无毒鼠活;无论结果如何,都可以判断出毒药在哪250瓶中;最多耗费第二只小白鼠;2
第三次:将有毒的250瓶分成125瓶一份,拿一只小白鼠试吃,两种结果,有毒鼠死,无毒鼠活;无论结果如何,都可以判断出毒药在哪125瓶中;最多耗费第三只小白鼠;2
第四次:将有毒的125瓶分成63瓶一份,拿一只小白鼠试吃,两种结果,有毒鼠死,无毒鼠活;无论结果如何,都可以判断出毒药在哪63瓶中;最多耗费第四只小白鼠;2
第五次:将有毒的63瓶分成32瓶一份,拿一只小白鼠试吃,两种结果,有毒鼠死,无毒鼠活;无论结果如何,都可以判断出毒药在哪32瓶中;最多耗费第五只小白鼠;2
第六次:将有毒的32瓶分成16瓶一份,拿一只小白鼠试吃,两种结果,有毒鼠死,无毒鼠活;无论结果如何,都可以判断出毒药在哪16瓶中;最多耗费第六只小白鼠;2
第七次:将有毒的16瓶分成8瓶一份,拿一只小白鼠试吃,两种结果,有毒鼠死,无毒鼠活;无论结果如何,都可以判断出毒药在哪8瓶中;最多耗费第七只小白鼠;2
第八次:将有毒的8瓶分成4瓶一份,拿一只小白鼠试吃,两种结果,有毒鼠死,无毒鼠活;无论结果如何,都可以判断出毒药在哪4瓶中;最多耗费第八只小白鼠;2
第九次:将有毒的4瓶分成22瓶一份,拿一只小白鼠试吃,两种结果,有毒鼠死,无毒鼠活;无论结果如何,都可以判断出毒药在哪2瓶中;最多耗费第九只小白鼠;2
第十次:将有毒的2瓶分成1瓶一份,拿一只小白鼠试吃,两种结果,有毒鼠死,无毒鼠活;无论结果如何,都可以判断出毒药在哪1瓶中;最多耗费第十只小白鼠;2
递归算法其实就是:
if()