zoukankan      html  css  js  c++  java
  • pythond 递归之找数字游戏

    函数递归(用在你不知道要循环多少次)
    1.必须有一个明确的结束条件
    2.每次进入更深一层递归时,问题规模相比上次递归都应有所减少
    3.递归效率不高,递归的层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧,由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)

    #有五个人,他们的岁数是递减2岁,到第五个人的时候是10岁,问你第一个人多少岁
    def age(n):
        if n==1:
            return 10
        else:
            return age(n-1)+2
    print(age(5))

    输入一个数字,在已有的列表列面查询是否有这个数字。注:代码是在python3.0所编写。
    二分法实例1、 data
    =[1,3,5,6,7,8,11,14,16,18,23,33,37,39,42,47,50] def search(num,data): if len(data)>1: m = int(len(data) / 2) if num<data[m]: print('在%s左边'%data[m]) data = data[:m] search(num,data) elif num>data[m]: print('在%s右边'%data[m]) data = data[m:] search(num,data) else: print('找到了%s'%data[m]) return else: if data[0]==num: print("找到了") else: print('没有找到') search(1,data) 二分法实例2、 import random tuple_a = [(10,15),(16,23),(25,29),(30,35),(37,42),(50,60),(61,65),(70,80),(81,85),(90,100)] b = random.randrange(100) print("Num:",b) def search_index(b,tuple_pre): min_index = 0 max_index = len(tuple_pre) - 1 if b < tuple_pre[min_index][0] or b > tuple_pre[max_index][1]:return "Not Found!" while True: center_index = int((max_index + min_index) / 2) front_tuple = tuple_pre[center_index -1] print('-->',front_tuple) if b >= tuple_pre[center_index][0] and b <= tuple_pre[center_index][1]: return "Index:%s Range:%s"%(center_index,tuple_pre[center_index]) elif b < tuple_pre[center_index][0]: if b > front_tuple[1]:return "Not Found!" max_index = center_index - 1 elif b > tuple_pre[center_index][1]: if b<tuple_a[center_index+1][0]:return 'No Found' min_index = center_index + 1 res = search_index(b,tuple_a) print(res)

    函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的。
    函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数!
    不会修改状态,精简,结果唯一!
  • 相关阅读:
    新的一天,新的一周
    mysql重启失败,报错:starting mysql。 the server quit without updating pid file (/[failed]l/mysql/data/hostname.pid])
    rpm包安装、配置与卸载
    python高效运用(十)———文件(File)、输入输出的基本操作
    paramiko--------远程服务器连接工具
    main
    thread同步测试
    实验二测试
    《信息安全系统设计与实现》学习笔记9
    实验二 OpenSSL API使用
  • 原文地址:https://www.cnblogs.com/tianlinger/p/8399891.html
Copyright © 2011-2022 走看看