zoukankan      html  css  js  c++  java
  • 递归函数

    二分查找算法:在执行的时候每次都是取出列表的中间位置的值来和要查找的值相比较,如果中间值小于目标值,则在后半部分中寻找;找出后半部分的中间值,再与目标值相比较,以此类推。

    def find_2(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:
                find_2(l,aim,start,mid-1)
            elif l[mid] < aim:
                find_2(l,aim,mid+1,end)
            else:
                print(aim,mid)
        else:
            print('找不到这个值')
    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]
    find_2(l,32)
    # 32 10

    alix的年龄问题:

    def age(n):
        if n == 4:
            return 40
        return age(n+1)+2
    print(age(1))
    # 46

    阶乘:

    def f(n):
        if n==1:
            return 1
        return n*f(n-1)
    print(f(3))
    # 6

    斐波那契数列:

    def fib(n):
        if n==1 or n==2:
            return 1
        return fib(n-1)+fib(n-2)
    print(fib(8))
    # 21

    三级菜单:

    menu = {
        '北京': {
            '海淀': {
                '五道口': {
                    'soho': {},
                    '网易': {},
                    'google': {}
                },
                '中关村': {
                    '爱奇艺': {},
                    '汽车之家': {},
                    'youku': {},
                },
                '上地': {
                    '百度': {},
                },
            },
            '昌平': {
                '沙河': {
                    '老男孩': {},
                    '北航': {},
                },
                '天通苑': {},
                '回龙观': {},
            },
            '朝阳': {},
            '东城': {},
        },
        '上海': {
            '闵行': {
                "人民广场": {
                    '炸鸡店': {}
                }
            },
            '闸北': {
                '火车战': {
                    '携程': {}
                }
            },
            '浦东': {},
        },
        '山东': {},
    }
    def menu_3(menu):
        while True:
            for key in menu:
                print(key)
            choice=input('选择:')
            if choice == 'q' or choice == 'b':
                return choice
            elif choice in menu and menu_3(menu[choice]):
                borq = menu_3(menu[choice])
                if borq == 'q':
                    return 'q'
    menu_3(menu)
  • 相关阅读:
    Leetcode: 1425
    Leetcode: 1508 Range Sum of Sorted Subarray Sums
    Leetcode: 1353. Maximum Number of Events That Can Be Attended
    Leetcode: 1424. Diagonal Traverse II
    Leetcode: 825. Friends Of Appropriate Ages
    非递归实现二叉树的前序,中序,后序遍历
    TCP协议详解
    Linux常见命令
    C++基础笔记
    指针和引用的区别
  • 原文地址:https://www.cnblogs.com/hzhcdhm/p/7806057.html
Copyright © 2011-2022 走看看