python17算法,递归

'''
二分法
'''
l=[1,2,3,4,5,6,7,8,9]

def func(aim,l,start=0,end=None):
    le=len(l)-1
    end=le if end==None else end
    mid=(start+end)//2
    if l[start]>aim or l[le]<aim:
        return '不存在'
    elif aim>l[mid]:
        return func(aim,l,mid+1,end)
    elif aim<l[mid]:
        return func(aim,l,start,mid-1)#切片顾头不顾尾
    elif aim==l[mid]:
        return mid

print(func(3,l))
'''
1、求阶乘
1      1         1
2      1*2       2
3      1*2*3     6
4      1*2*3*4   24
'''

def factor(n):
    i=1
    sum=1
    while i<n:
        i+=1
        sum*=i
    return sum

print(factor(4))
'''
递归,阶乘
'''
def fib(n):
if n==1:
return 1
else:
return fib(n-1)*n
print(fib(4))
''' 斐波那契 1 1 2 1 3 2 4 3 5 5 6 8 7 13 8 21 ''' def fs(n): if n<3: return 1 l=[1,1] i=2 while i<n: l.append(l[i-1]+l[i-2]) i += 1 return l[i-1] print(fs(3))

 

'''
递归实现斐波那契
'''
def fss(n):
    if n==1 or n==2:
        return 1
    else:
        return fss(n-1)+fss(n-2)
print(fss(8))

 

posted @ 2019-05-05 22:12  jiuchen  阅读(90)  评论(0)    收藏  举报