zoukankan      html  css  js  c++  java
  • 递归

    一.定义

      在一个函数内部再调用函数本身。

    二.递归深度

      每一次的调用,都会产生一个属于自己的空间,为了防止名称空间占用太多内存,于是python将递归层数控制在997(默认值),当然也可以修改,跟计算机的性能有关。

    三.递归实例

      1.求一个整数n的阶乘

    1 def factorial(n) :
    2   if n == 1 :
    3     return 1         #递归结束
    4   return n * factorial(n - 1)  #问题规模减1,递归调用

      n = 5

      执行完后面return后面的再返回

    四.注意:

      递归解决的问题:
      就是通过参数,来控制每一次缩小计算的规模


      适合的场景:
      数据的规模在减小,但是解决问题的思路没有变


      结束递归的的标志:return

    五.二分查找算法 

     1 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]
     2 def func(l,aim):
     3     mid = (len(l)-1)//2
     4     if l:
     5         if aim > l[mid]:
     6             func(l[mid+1:],aim)
     7         elif aim < l[mid]:
     8             func(l[:mid],aim)
     9         elif aim == l[mid]:
    10             print("bingo",mid)
    11     else:
    12         print('找不到')
    13 func(l,66)
    14 func(l,6)
    15 
    16 #升级版
    17 def func(l, aim,start = 0,end = len(l)-1 ):
    18     mid = (start+end)//2
    19     if not l[start:end+1]:
    20         return
    21     elif aim > l[mid]:
    22         return func(l,aim,mid+1,end)
    23     elif aim < l[mid]:
    24         return func(l,aim,start,mid-1)
    25     elif aim == l[mid]:
    26         print("bingo")
    27         return mid
    28 
    29 index = func(l,68)
    30 print(index)
  • 相关阅读:
    hdu 1260 Tickets
    hdu 4738 Caocao's Bridges(桥的最小权值+去重)
    找规律
    C语言快速排序
    数组的初始化方法
    C语言选择排序
    副本机制
    安装完Kali的后续操作
    Bool盲注
    Python中的列表
  • 原文地址:https://www.cnblogs.com/sxh-myblogs/p/7265160.html
Copyright © 2011-2022 走看看