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

    一 递归函数


    n = 1 金老板 38+2 =40
    n = 2 alex n+2= 金老板 36+2 = 38
    n = 3 wusir n+2 = alex wusir 36

    def age(n): #n = 2
    if n == 3:
    return 36
    else:
    return age(n+1)+2

    jin_age = age(1) # 40
    print(jin_age)



    求阶乘 _ 递归函数
    5! = 5*4*3*2*1 # 5 * 4! fn(5)
    4! = 4*3*2*1 # 4 * 3! fn(4)
    3 * 2! fn(3)
    2 *1! fn(2)
    1 fn(1) = 1
    def fn(n): #n=5
    if n == 1:return 1
    return fn(n-1) * n
    print(fn(5))


    二 算法
    算法 计算的方法
    99*99 = 99*(100-1) = 99*100-99*1 = 99*100-99 = 9900-99 = 9801 _ 人计算的方法
    99 * 99
    计算机的思维和人脑的思维是不同的
    算法很难
    计算机领域的 算法 是计算机认为简便的算法

    查找算法
    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
    方法一: 循环 # 5000000 4999999
    方法二: l.index(66) #最正确的方法

    算法
    从有序的列表中查找值的位置
    [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]
    41 < 66
    [42,43,55,56,66,67,69,72,76,82,83,88]
    66 < 67
    [42,43,55,56,66]
    55 < 66
    [56,66]
    56 < 66
    [66]
    66 == 66

    递归 : 解决一个问题,问题的答案,依托于另一个问题,另外的这个问题和要解决的问题是基本一致的
    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]
    def find(l,aim):
    mid = len(l)//2
    if l[mid] > aim:
    new_l = l[:mid]
    find(new_l,aim)
    elif l[mid] < aim:
    new_l = l[mid+1:]
    find(new_l, aim)
    elif l[mid] == aim:
    print('找到了:',mid,aim,l[mid])
    find(l,66)


    def find(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:
    return find(l,aim,start=start,end=mid-1)
    elif l[mid] < aim:
    return find(l,aim,start=mid+1,end=end)
    elif l[mid] == aim:
    return mid
    else:
    return None
    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]
    print('ret :',find(l,18))
    1 如果要查找的值不在列表中
    2 参数的简化
    3 返回值的问题

    递归函数完成 : 三级菜单 真题附加题 斐波那契数列fib(20)
    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]
    def find(l,aim):
    mid = len(l)//2
    if l[mid] > aim:
    new_l = l[:mid]
    find(new_l,aim)
    elif l[mid] < aim:
    new_l = l[mid+1:]
    find(new_l, aim)
    elif l[mid] == aim:
    print('找到了:',mid,aim,l[mid])
    find(l,66)

    l=[]
    def con(n):
    if n==1:
    return 1
    elif n==2:
    return 1
    else:
    return
    f()

    def f(n):
    if n==1:
    return 1
    elif n==2:
    return 1
    else :
    return f(n-1)+f(n-2)
    f(4)
    print(f(4))


    def f(n):
    if x<n:
    a=1
    b=1
    con=0
    a+b=b+a
    elif:
    x=n
  • 相关阅读:
    关闭窗体后,利用StreamWriter保存控件里面的数据
    ref传递
    C# 特性 Attribute
    关键字 new 的作用
    关键字 base 的作用
    关键字 this 的作用
    random类的使用
    数据库结果为 基于左右值排序的无限分类算法
    PHP显示日期、周几、农历初几、什么节日函数编程代码
    描述了say_hello函数的具体内容,调用zend_printf系统函数在php中打印字符串
  • 原文地址:https://www.cnblogs.com/chongdongxiaoyu/p/8474625.html
Copyright © 2011-2022 走看看