以前在课堂上接触过二分法这个概念。如今再次从教程上看到的时候,我决定自己写把代码写出来,然后再去看教程,看一下我自己所写和教程上的分析有些什么差距。
二分法,首先当然是要寻找其中点。
我设置一个int型变量o.起初把其值赋值为0.
而接下来,我考虑二分法是一个无限循环,所以,我使用了while(1)循环条件。这里,我忽视了一个问题,如果没有找到答案,那么程序会一直执行下去。
我写出来的代码为:
这个while(o<n)判断条件,很可能会陷入死循环,例如o=6,n=7,那么这个循环就会一直执行下去。而且例外一点,当找不到数值的时候,按照题目的规则,应该返回的是字符串的长度,而在这段代码里,由于对n进行了赋值操作。其return n;语句返回的可能是被修改后的n的值。
这个题目比较简单,而且思路很明了。但是在解决这个问题的时候,我缺在处理过程中出了这么多错误和缺陷。
其原因:1,毛躁;2,考虑不全面。
毛躁在于处理问题的时候急于下结论,而没有仔细思考。
考虑不全面在于整理思路出来之后,内心认为问题已经被解决,而未顾及细节之处。
再来看书上的代码:
这段代码不会出现死循环(h,i都进行移动操作),第二不会出现遗漏(设定值为o<=h)。
相比我自己写的,在安全性,结构性方面都要好得多,而且理解起来也容易得多。