C语言第十三次课
(1):Fibonacci数列:从第三项开始,每一项都等于前两项之和。
例如:0 1 1 2 3 4 5 8 13…
过程图解:
时间复杂程度出现了指数型耗损即O(2^n);因为进行了大规模的重复计算。
要求从新编写递归部分来降低时间复杂程度;使时间复杂程度变为 O(n);将上面的循环改为递归,利用参数来做文章。
执行过程如下:
(2)如果数组有序使用 “二分查询”:
思考:如果val=45时 程序运行时哪里出了问题?
注意:left=right ;并未找到值。应当改为while(left<=right)。当left=right时说明数据下标相同,但数据规模内还有一个值需要去进行比较。
二分查询的全部代码:
有重复值时二分查找最左边或者最右边:
另一种方法:
二分查询把“循环”改为“递归”。
将循环改为递归:
解释为: