'''
二分法
'''
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))