zoukankan      html  css  js  c++  java
  • day17_递归

    递归:调用函数本身

    递归的最大深度997,自我保护机制

    import sys
    sys.setrecursionlimit(n)  #n为自己设置递归的深度参数

    实例参考:

    def age(n):
        if n==1:
            return 40
        else:
            return age(n-1)+2
    print(age(4))

     ----------------------------------------------------------------------------------

    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]
    #查找66
    --------------------------
    #内置函数
    def func(i):
        if i in l:
            print(l.index(i))
        else:
            print("不存在")
    func(66)
    --------------------------
    #for循环
    num = 0
    def func(j):
        for i in l:
            global num
            if i == j:
                print("存在")
                print(num)
            else:
                pass
            num += 1
    func(66)
    ---------------------------

    # def func(l,aim):
    # mid_index = len(l) // 2
    # if l:
    #
    # if l[mid_index] > aim:
    # func(l[0:mid_index],aim)
    # elif l[mid_index] < aim:
    # func(l[mid_index+1:len(l)],aim)
    # else:
    # print("找到了%d--%d"%(aim,mid_index))
    #
    # else:
    # print("找到了")
    # func(l,66)
    # 升级版
    def func(l,aim,start = 0,end = len(l)):
    mid_index = (end - start)//2+start
    if l:

    if l[mid_index] > aim:
    func(l,aim,start,mid_index-1)
    elif l[mid_index] < aim:
    func(l,aim,mid_index+1,end)
    else:
    print("找到了%d--%d"%(aim,mid_index))

    else:
    print("找到了")
    func(l,66)

     斐波那契:

    n = int(input("请输入任意值:"))
    -------------------------------------循环
    s = [0,1]
    for i in range(n+1):
        s.append(s[i]+s[i+1])
    s.pop()
    s.pop()
    print(s)
    print(s[i])
    --------------------------------------递归
    def func(i):
        if i == 1 or i==2:
            return 1
        else:
            return func(i-1)+func(i-2)   #递归就是结果向前推
    print(func(n))

    阶乘:

    n = int(input("请输入任意值:"))
    --------------------------------------循环
    s = []
    l =1
    for i in range(1,n+1):
        s.append(i)
    print(s)
    for j in range(len(s)):
        l *= s[j]
    print(l)
    ----------------------------------------递归
    def func(n):
        if n==1:
            return 1
        else:
            return n * func(n-1)
    print(func(12))
  • 相关阅读:
    NSString属性声明中的copy和retain区别
    Xcode6无法安装VVDocumenter插件的解决方法
    Xcode好用插件
    REVEAL APP for IOS 永久试用
    Foundation框架 ---- 结构体
    Foundation框架集合 ---- NSArray和NSMutableArray
    《 算法分析与设计》 实验一-分治算法
    B-浮点常量问题
    Servlet 404原因
    小C语言--词法分析程序
  • 原文地址:https://www.cnblogs.com/wzc27229/p/11060743.html
Copyright © 2011-2022 走看看