目录
(2)1到10的阶乘:1*2*3...........*10
1.递归函数的准备知识:
def func1():
print('func1...')
def func2():
print('func2....start')
func1()
print('func2...end')
def func3():
print('func3...start')
func2()
print('func3..end')
func3()
# func3...start
# func2....start
# func1...
# func2...end
# func3..end
2.递归函数的定义
如果一个函数在内部调用自身本身,这个函数就是递归函数。
3.在使用递归时,需要注意以下几点
(1).自己调用自己
(2).必须有一个明确的递归结束条件,称为递归出口
4.递归函数的小练习
(1)使用递归函数向控制台打印 3,2,1
-
代码:
# 练习一:使用递归函数向控制台打印3,2,1
def print_num(num):
print(num)
if num == 1:
return
num = num - 1
print_num(num) # 调用自己
print('---------->>>')
print_num(3)
-
分析:
(2)1到10的阶乘:1*2*3...........*10
-
代码:
# 练习二:1到10的阶乘1*2*3*4......*10
def jiecheng(num):
if num == 1:
return 1
ret = jiecheng(num - 1)
return num * ret
num = jiecheng(3)
print(num)
-
分析:
(3)查找数字,通过程序查找输入的number值
1,2,3,4,5,6,7,8,9,10
-
思路:使用二分查找法
先找中间值:中间值=(开始值+结束值)//2
如果要找的数比中间值大,到后一半找
如果要找的数比中间值小,就到前一半找
-
代码:
# 练习三:查找数字:通过程序查找输入的number值
# 1,2,3,4,5,6,7,8,9,10
# 二分查找法
def search_num(number, start, end):
if number == start:
return start
elif number == end:
return end
else:
# 获得中间值
middle = (start + end) // 2
if middle <= number:
return search_num(number, middle, end)
else:
return search_num(number, start, middle)
ret = search_num(4, 1, 4)
print(ret)
-
分析: