zoukankan      html  css  js  c++  java
  • 函数递归与二分法(python3入门)

     1 import sys
     2 
     3 print(sys.getrecursionlimit())  # 查询递归保护限制次数
     4 
     5 # 函数递归:在调用函数的过程中又 直接或者间接的调用该函数本身,称之为函数的递归调用
     6 
     7 # 函数递归必须满足:
     8 # 1 必须有一个明确的结束条件
     9 # 2 每进入下一层递归,问题的规模都应该有所减少
    10 
    11 # 由上述两个条件可以推导出递归应该有两个明确的阶段:
    12 # 1 回溯:一层一层的递归调用下去
    13 # 2 递推:在某一层结束掉递归,开始往回一层层的返回
    14 
    15 
    16 # 遍历打印li1的所有值
    17 li1 = [1, [2, [3, [4, [5, [6, [7, ]]]]]]]
    18 
    19 
    20 def test(a):
    21     for i in a:
    22         if type(i) is list:
    23             return test(i)
    24         print(i)
    25 
    26 
    27 test(li1)
    28 
    29 
    30 # 在nums列表中寻找自定义的值(使用二分法)
    31 nums = [11, 13, 21, 31, 43, 101, 221, 302, 339, 443]
    32 
    33 
    34 def ttt(l, find_num):
    35     n = len(l) // 2
    36     if l is not None:
    37         return print('not exist')
    38     if l[n] > find_num:
    39         print('这个值太大了,值应该在左边')
    40         ttt(l[:n], find_num)
    41 
    42     elif l[n] < find_num:
    43         print('这个值太小了,值应该在右边')
    44         ttt(l[n + 1:], find_num)
    45     else:
    46         print('就是这个值')
    47         print(l[n])
    48 
    49 
    50 ttt(nums, find_num=444)
    51 
    52 
    53 #有5个人,第一个说比第二个大两岁,第二个说比第三个大两岁,以此类推,第五个说'我是18岁',求第一个人的年龄
    54 def age(n):
    55     if n == 1:
    56         return 18
    57     return age(n-1)+2
    58 
    59 res = age(5)
    60 print(res)
  • 相关阅读:
    关于区间数颜色的主席树解决
    1020考试总结
    QR算法
    新的征程
    端点星2020.12.2联赛
    自我介绍&友链
    3个搜索
    搜索格式这样写
    T107073 归并排序
    还有这个题
  • 原文地址:https://www.cnblogs.com/lich1x/p/10029676.html
Copyright © 2011-2022 走看看