一 递归函数
n = 1 金老板 38+2 =40
n = 2 alex n+2= 金老板 36+2 = 38
n = 3 wusir n+2 = alex wusir 36
def age(n): #n = 2
if n == 3:
return 36
else:
return age(n+1)+2
jin_age = age(1) # 40
print(jin_age)
求阶乘 _ 递归函数
5! = 5*4*3*2*1 # 5 * 4! fn(5)
4! = 4*3*2*1 # 4 * 3! fn(4)
3 * 2! fn(3)
2 *1! fn(2)
1 fn(1) = 1
def fn(n): #n=5
if n == 1:return 1
return fn(n-1) * n
print(fn(5))
二 算法
算法 计算的方法
99*99 = 99*(100-1) = 99*100-99*1 = 99*100-99 = 9900-99 = 9801 _ 人计算的方法
99 * 99
计算机的思维和人脑的思维是不同的
算法很难
计算机领域的 算法 是计算机认为简便的算法
查找算法
l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
66
方法一: 循环 # 5000000 4999999
方法二: l.index(66) #最正确的方法
算法
从有序的列表中查找值的位置
[2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
41 < 66
[42,43,55,56,66,67,69,72,76,82,83,88]
66 < 67
[42,43,55,56,66]
55 < 66
[56,66]
56 < 66
[66]
66 == 66
递归 : 解决一个问题,问题的答案,依托于另一个问题,另外的这个问题和要解决的问题是基本一致的
l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
def find(l,aim):
mid = len(l)//2
if l[mid] > aim:
new_l = l[:mid]
find(new_l,aim)
elif l[mid] < aim:
new_l = l[mid+1:]
find(new_l, aim)
elif l[mid] == aim:
print('找到了:',mid,aim,l[mid])
find(l,66)
def find(l,aim,start=0,end=None):
if end == None:end = len(l)-1
if start <= end:
mid = (end - start) // 2 + start
if l[mid] > aim:
return find(l,aim,start=start,end=mid-1)
elif l[mid] < aim:
return find(l,aim,start=mid+1,end=end)
elif l[mid] == aim:
return mid
else:
return None
l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
print('ret :',find(l,18))
1 如果要查找的值不在列表中
2 参数的简化
3 返回值的问题
递归函数完成 : 三级菜单 真题附加题 斐波那契数列fib(20)
l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
def find(l,aim):
mid = len(l)//2
if l[mid] > aim:
new_l = l[:mid]
find(new_l,aim)
elif l[mid] < aim:
new_l = l[mid+1:]
find(new_l, aim)
elif l[mid] == aim:
print('找到了:',mid,aim,l[mid])
find(l,66)
l=[]
def con(n):
if n==1:
return 1
elif n==2:
return 1
else:
return
f()
def f(n):
if n==1:
return 1
elif n==2:
return 1
else :
return f(n-1)+f(n-2)
f(4)
print(f(4))
def f(n):
if x<n:
a=1
b=1
con=0
a+b=b+a
elif:
x=n