利用python实现二分法:我的实现思路如下

1、判断要查找的值是否大于最大值,如果大于则直接返回False

2、判断要查找的值是否小于最小值,如果小于则直接返回False

3、如果要查找的值在最大值和最小值之间,则进入循环

a、首先序列的长度要大于1,然后获取序列中间一个值的大小

b、然后和要查找的值做比较,如果相等,则直接返回True,如果不相等,则判断如果中间的值大于要查找的值,则说明要查找的值在该中间值的左边,如果中间的值小于要查找的值,则说明要查找的值在中间的值的右边

c、最后如果序列的长度为1,则直接判断序列的值和要查找的值是否相等即可

def f1(src_list,find_n):
if find_n > src_list[-1]: #判断find_n是否大于最大值,如果大于则直接返回
s = "%s is not finded" % (find_n)
print(s)
return False
if find_n < src_list[0]: #判断find_n是否小于最小值,如果小于则直接返回
s = "%s is not finded" % (find_n)
print(s)
return False
else: #只有find_n在最大值和最小值之间,才进入函数
mid = int(len(src_list)/2)
if len(src_list) > 1:
if src_list[mid] > find_n:
print("%s in left" %(find_n))
mid_list = src_list[0:mid]
f1(mid_list,find_n)
elif src_list[mid] < find_n:
print("%s in right" %(find_n))
mid_list = src_list[mid:]
f1(mid_list,find_n)
else:
print("%s is finded" %(find_n))
return True
if len(src_list) == 1:
if src_list[0] == find_n:
s = "%s is finded" % (find_n)
print(s)
return True
else:
s = "%s is not finded" % (find_n)
print(s)
return False
data = list(range(0,10,3))
f1(data,-1)

下面我们在来实现以下斐波那契序列

# 0,1,1,2,3,5,8,13,21,44,65,109
第三个数是前面2个数之和,代码如下
def f1(a,b,stop):
if a == stop:
print(a)
return True
elif b == stop:
print(a,b,sep=" ",end="\n")
return True
elif a > stop:
print("无效的输入")
return False
else:
if a == 0:
print(a,b,sep="\n")
c = a + b
print(c)
if c < stop:
f1(b,c,stop) f1(0,1,144)

结果如下

0
1
1
2
3
5
8
13
21
34
55
89
144

  

利用python实现二分法和斐波那契序列的更多相关文章

  1. Python基础(二):斐波那契数列、模拟cp操作、生成8位随机密码

    一.斐波那契数列 目标: 编写fib.py脚本,主要要求如下: 输出具有10个数字的斐波那契数列 使用for循环和range函数完成 改进程序,要求用户输入一个数字,可以生成用户需要长度的斐波那契数列 ...

  2. HDU 5620 KK's Steel (斐波那契序列)

    KK's Steel 题目链接: http://acm.hust.edu.cn/vjudge/contest/121332#problem/J Description Our lovely KK ha ...

  3. pytho查找斐波那契序列中的值

    ''' 实现斐波那契序列,查找其中第N个数的值 ''' def FeiBSequence(list,N): length=len(list); i=0; while i<length: if N ...

  4. 爬楼梯问题-斐波那契序列的应用.md

    N 阶楼梯,一次可以爬1.2.3...n步,求爬楼梯的种类数 /** * 斐波那契序列 */ public class ClimbingStairs { // Sol 1: 递归 // 递归 公式:F ...

  5. [LeetCode] Split Array into Fibonacci Sequence 分割数组成斐波那契序列

    Given a string S of digits, such as S = "123456579", we can split it into a Fibonacci-like ...

  6. 最长斐波那契序列-LeetCode-873

    英文版A sequence X_1, X_2, ..., X_n is fibonacci-like if: - n >= 3- X_i + X_{i+1} = X_{i+2} for all ...

  7. 【严蔚敏】【数据结构题集(C语言版)】1.17 求k阶斐波那契序列的第m项值的函数算法

    已知k阶斐波那契序列的定义为 f(0)=0,f(1)=0,...f(k-2)=0,f(k-1)=1; f(n)=f(n-1)+f(n-2)+...+f(n-k),n=k,k+1,... 试编写求k阶斐 ...

  8. 【剑指offer】斐波那契序列与跳台阶

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/25337983 剑指offer上的第9题,简单题,在九度OJ上測试通过. 主要注意下面几点: ...

  9. yield和python(如何生成斐波那契數列)

    您可能听说过,带有 yield 的函数在 Python 中被称之为 generator(生成器),何谓 generator ? 我们先抛开 generator,以一个常见的编程题目来展示 yield ...

随机推荐

  1. 1011 World Cup Betting (20 分)

    1011 World Cup Betting (20 分) With the 2010 FIFA World Cup running, football fans the world over wer ...

  2. Django1.7开发博客

    转自: http://www.pycoding.com/articles/category/django 基于最新的django1.7写的,通俗易懂,非常适合新手入门. 感谢博主! 参考教程: htt ...

  3. ROS-RouterOS 的license注册级别

    原文: https://wiki.mikrotik.com/wiki/Manual:CHR#CHR_Licensing https://wiki.mikrotik.com/wiki/Manual:Li ...

  4. flume系统使用以及与storm的初步整合

      Flume NG的简单使用可以参考介绍文档:http://blog.csdn.net/pelick/article/details/18193527,图片也来源此blog:       下载完fl ...

  5. WCF服务部署

    一.将WCF服务部署到IIS上 1.首先检测电脑上是否安装了IIS,一般来说Win7以上系统自带IIS 2.下面进行IIS服务的开启设置 控制面板=>打开或关闭Windos功能 3.勾选该窗口中 ...

  6. Z-tree 统计每一父节点的叶子节点数(看这一篇就够了)

    最近刚走出校园的我找到了第一份工作,在入职考核中就遇见了一道Z-tree的试题 这道题目本身是不难的,但是我第一次接触这个插件而且还把解决问题的方向搞错了,弄的我好几天都很难受. 弄得我都开始怀疑人生 ...

  7. PHP 算术运算符

    PHP 算术运算符 运算符 名称 描述 实例 结果 x + y 加 x 和 y 的和 2 + 2 4 x - y 减 x 和 y 的差 5 - 2 3 x * y 乘 x 和 y 的积 5 * 2 1 ...

  8. 1.获取服务器IP、端口等

    比如,页面内部有一个连接,完整的路径应该是 http://192.168.0.1:8080/myblog/authen/login.do 其中http://server/是服务器的基本路径,myblo ...

  9. vs2015 调试IIS

    vs2015 调试IIS vs2015,menu,调试>附加到进程>w3wp 然后用浏览器打开网页,单步调试跟踪. http://blog.csdn.net/hyperhawk/artic ...

  10. c++builder Delphi 直接使用剪贴板 Clipboard

    c++builder Delphi 直接使用剪贴板 Clipboard 剪贴板 delphi use  Vcl.Clipbrd procedure TForm27.FormCreate(Sender: ...