笔记:python基础之算法(递归函数的应用)

什么叫算法
计算的方法 : 人脑复杂 计算机简单

99 * 13 = 1287 = 13*100 - 13
查找 : 找数据
排序 :
最短路径

学习算法的必要性
我们学习的算法 都是过去时
了解基础的算法 才能创造出更好的算法
不是所有的事情都能套用现成的方法解决的
有些时候会用到学过的算法知识来解决新的问题

应用1:二分查找算法 必须处理有序的列表,先把数据一分为二,再比较与要查找的数大小

#二分查找:递归函数的应用
l=[2,4,6,9,10,13,15,18,21,23,26,28,45,55,66,67,72,75,80,84,88,97,100]
def find(l,aim,start=0,end=None):#在封装函数的时候,并不知道传进来的l是什么,所以不能这样在默认参数里写end=len(l)
    end=len(l) if end is None else end#这样就能每次递归的时候会用到新的end值
    mind_ind=(end-start)//2+start
    if end>=start:
        if l[mind_ind]>aim:
            return find(l,aim,start=start,end=mind_ind-1)
        elif l[mind_ind]<aim:
            return find(l,aim,start=mind_ind+1,end=end)
        else:
            return mind_ind #想要最后返回值,必须每层都要返回,所以上面还有两个return
    else:
        return('找不到这个值%s'%aim)
find(l,21)

应用2:斐波那契数计算:

#斐波那契数列:1,1,2,3,5,8,13,21,34,55,89——F[n]=F[n-1]+F[n-2]
#递归函数练习:求第n个斐波那契数是多少
def F(n,i=None,f=None):
    i=2 if i is None else i
    f=[1,1] if f is None else f
    if n>i:
        f.append(f[i-1]+f[i-2])
        i+=1
        return(F(n,i,f))
    elif n==i:
        f.append(f[i-1]+f[i-2])
        return(f[i])
    elif n==0 or n==1:
        f[n]=1
        return f[n]
    else:
        print('您输入的n为负数,请重新输入')

应用3:阶乘

def fq(n):
    if n==1:
        return(1)
    return(n*fq(n-1))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值