7.7 递归
7.7 递归
递:传递;归:回归
#函数的嵌套
def f2():
print('from f2')
def f1 ():
print('from f1')
f2()
f1()
from f1
from f2
7.7.1 函数递归
# def f2():
# print('from f2')
def f1 ():
print('from f1')
f1()
# f1()
#无终止条件
递归:函数不断的调用自身,类似于循环必须有终止条件
#打印1-10
def f(x):
print(x)
x+=1 #变量修改
if x==11:
return
f(x) #传入函数
f(1)
#有终止条件
1
2
3
4
5
6
7
8
9
10
#后一个人比前一个人小2岁,计算第5个人多少岁
def guess_age(age,count):
count-=1
age-=2
if count==1:
print(age)
return
guess_age(age,count)
age=guess_age(38,5)
30
#改进返回值
def guess(count):
count-=1
if count==1:
return 26
return guess(count)+2
res=guess(5)
print(res)
32
#上述代码递归过程
guess(5)=guess(4)+2
guess(4)=guess(3)+2
guess(3)=guess(2)+2
guess(2)=26
guess(5)=guess(4)+2=(guess(3)+2)+2==((guess(2)+2)+2)+2=26+2+2+2=32
折半查找
import time
def find_num(num,lis):
if num>lis[len(lis)-1]:
print('查找元素不在该列表范围内')
return
mid=len(lis)//2
if lis[mid] < num:
lis=lis[mid+1:]
find_num(num,lis)
elif lis[mid] > num:
lis=lis[:mid]
find_num(num,lis)
elif lis[mid]==num:
print('找到了')
lis =[i for i in range(100000000)]
start=time.time()
find_num(522,lis)
end=time.time()
print(end-start)
找到了
0.8514950275421143
浙公网安备 33010602011771号