今天学的东西不少,基本上都弄懂了,自己也实操编写了代码,思考了问题,既是是很简单的问题还是把我难住了,要加油,要努力。
第一是继续学习了昨天没有学完的循环结构
编写了鸡兔同笼的算法,总的来说是用了两个for循环来遍历,最后得出答案。
鸡兔同笼还遇见了一道题
死循环通过询问弄懂了,break是终止for的循环,不是终止whie的循环。
在编程练习中,发现了不少问题,也解开了这些问题。
第一个是二分法求解x的根的算法
最简单的形式是
最简单的二分法求解根但是遇见了老师提出的问题
当x小于0,理应输出‘no root’,所以程序还不完善。但是当x小于1喃?困惑了我不少时间(可能是我太笨),最后终于理清了思路,由于y=x**2是增函数,所以在这里(0,1)区间二分法还是适用的,但是错误出在当x<1,x小于x的根,所以此程序二分法的区间不包含x的根。
解决办法是在x出于(0,1)的区间时,领促使二分区间包含x的根,可以guess=1,那么初始二分区间就是(0,1)。
最后进过更改修正了x<1的情况,在加上了昨天学的可以多次求解的程序。
二分法求解x的根今天最后学习的是求解素数的算法,其原理还是通过for循环来遍历最后得出结果,但是不同点的收获有2点,第一点是:else不同缩进的用法和涵义;第二点是:遍历范围的优化
第一点:
素数判定算法(else不同用法)当else缩进在if前面时,表示只有非正常结束时候才执行。
第二点:
提出的问题:一定要遍历(2,n)的范围才能确定是不是素数吗?
更快遍历?范围缩小这可让我为难了,想了半天还是不懂,幸好后面有聪明的“师兄"的的解答:
因为一个素数的解必定唯一这个数的根的两边,所以遍历根的一边当发现没有其他解时,就可以判定它是素数了。
2017.12.16
笨鸟先飞
网友评论