Python递归函数 二分查找法的应用

目录

1.递归函数的准备知识:

2.递归函数的定义

3.在使用递归时,需要注意以下几点

(1).自己调用自己

(2).必须有一个明确的递归结束条件,称为递归出口

4.递归函数的小练习

(1)使用递归函数向控制台打印 3,2,1

代码:

分析:

(2)1到10的阶乘:1*2*3...........*10

代码:

分析:

(3)查找数字,通过程序查找输入的number值

1,2,3,4,5,6,7,8,9,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)
  • 分析:

猜你喜欢

转载自blog.csdn.net/g_optimistic/article/details/86363836