这里归纳的知识点主要就是:

浮点数,复数,

int,整形;float,浮点数;complx,复数;

 # 实数:
# 有理数 有限小数 1.2
# 无限循环小数 1.23232323232323.....
# 无理数 无限不循环小数
#浮点数-小数
#浮动
#1.2 = 12*0.1
#1.2 = 0.12*10 # py2和3的区别
# print(1/2) #浮点数的特点
# a = 1.15346974071908269370703493
# print(a) #float
# print(float('1.234')) #复数 a+bj 实部+虚部
# 实数 :1
# 虚数 :j
#平方是-1的数就是j
"-1"
#复数:
# 复数之间不能比较大小
# 2+3j
# 2+3J
# complex

递归函数

初识递归:

# def story():
# print('从前有座山,山里有座庙,庙里有个老和尚讲故事,讲的什么呢?') #功能解耦:
#为什么要有函数:提高代码可读性,避免重复的代码,提高代码的复用性
#在函数中能return的不要print
# while True:
# story() # def story():
# print('从前有座山,山里有座庙,庙里有个老和尚讲故事,讲的什么呢?')
# story()
#
# story()
# import sys
# # print(sys.getrecursionlimit())
# sys.setrecursionlimit(2000000000)
# n = 0
# def func():
# global n
# n+=1
# print(n)
# func()
# func() #递归
#在一个函数里面 调用 自己
#默认的递归最大限度 1000
#不要修改默认的递归最大限度
#往往 递归 都是 和循环挂在一起的
# 人理解循环 神理解递归
# 算法,递归函数
# 认识递归
# 递归函数怎么读?
# 带着你写两段代码 #多大了alex,我不告诉你,alex比egon大两岁 44+2
#egon多大了,我不告诉你,egon比wusir大两岁 42+2
#wusir多大了,我不告诉你,wusir比金鑫大两岁 40+2
#金鑫40了 # age(1) n = 1 age(2)+2
# age(2) n = 2 age(3)+2
# age(3) n = 3 age(4)+2
# age(4) n = 4 40 def age(n):
if n == 4:
return 40
return age(n+1)+2 print(age(0)) # def age(0):
# if n == 4:
# return 40
# return age(1)+2 #48 # def age(1):
# if 1 == 4:
# return 40
# return age(2)+2 #46 这个46返回给上面的return age(1)+2
#
# def age(2):
# if 2 == 4:
# return 40
# return age(3)+2 # 44   这个44返回给上面的return age(2)+2
#
# def age(3):
# if 3 == 4:
# return 40
# return age(4)+2 #return 42  这个42返回给上面的return age(3)+2
#
# def age(4):
# if 4 == 4:
# return 40 这个40返回给上面的return age(4)+2
# # age(n+1)+2

二分查找算法:

#算法:一种计算的方法
# 3+2
# 3*2+5
# 99*28 == (100-1)*28 == 28*100 - 28
# 典型问题:冒泡排序,快速排序,堆排序
# 查找算法 # 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(l.index(66))
# index = 0
# for i in l :
# if i == 66:
# print(index)
# index += 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] #二分查找算法
#
# def find(lst,aim):
# mid = len(lst)//2
# if lst:
# if aim > lst[mid]:
# new_lst = lst[mid+1:]
# find(new_lst,aim)
# elif aim < lst[mid]:
# new_lst = lst[:mid]
# find(new_lst, aim)
# else:
# print(aim,mid)
# else:
# print('您要找的值不存在')
# find(l,36) # def find(lst,66): #lst = [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]
# mid = len(lst)//2 #mid = 12 = 25//2
# if lst:
# if 66 > 41:
# new_lst = lst[mid+1:] #new_lst = [42,43,55,56,66,67,69,72,76,82,83,88]
# find(new_lst,aim) #find([42,43,55,56,66,67,69,72,76,82,83,88],66)
# else:
# print('您要找的值不存在')
#
# def find(lst,aim): #lst = [42,43,55,56,66,67,69,72,76,82,83,88],66
# mid = len(lst)//2 #mid = 12//2 = 6
# if lst:
# if 66 > 69: #66
# new_lst = lst[mid+1:]
# find(new_lst,aim)
# elif 66 < 69:
# new_lst = lst[:mid] #[42,43,55,56,66,67]
# find(new_lst, aim) #find([42,43,55,56,66,67],66)
# else:
# print('您要找的值不存在')
#
#
# def find(lst,aim): #[42,43,55,56,66,67],66
# mid = len(lst)//2 #mid = 3
# if lst:
# if 66 > 56:
# new_lst = lst[mid+1:] #66,67
# find(new_lst,aim) #find([66,67],66)
# elif aim < lst[mid]:
# new_lst = lst[:mid]
# find(new_lst, aim)
# else:
# print(aim,mid)
# else:
# print('您要找的值不存在')
#
# def find(lst,aim): #[66,67],66
# mid = len(lst)//2 #mid = 1
# if lst:
# if 66 > 67:
# new_lst = lst[mid+1:]
# find(new_lst,aim)
# elif 66 < 67:
# new_lst = lst[:mid] #[66]
# find(new_lst, aim) #find([66],66)
# else:
# print(aim,mid)
# else:
# print('您要找的值不存在')
#
# def find(lst,aim): #[66],66.5
# mid = len(lst)//2 #mid = 0
# if lst:
# if 66 > 66:
# new_lst = lst[mid+1:]
# find(new_lst,aim)
# elif 66 < 66.5:
# new_lst = lst[:mid] #[]
# find(new_lst, aim) #find([],66)
# else:
# print(aim,mid)
# else:
# print('您要找的值不存在') # def find_2(l,aim,start=0,end=None): #[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]
# if end == None:end = len(l) - 1 #start = 0,end = 24
# if start <= end:
# mid = (end-start) // 2 + start #mid = 12
# if l[mid] > aim:
# find_2(l,aim,start,mid-1)
# elif l[mid] < aim: #
# find_2(l,aim,mid+1,end) #find_2(l,58,13,24)
# else:
# print(aim,mid)
# else:
# print('找不到这个值')
# 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]
# find_2(l,58) #如果要找的值不存在
#返回值的问题 # def find_2(l,aim,start=0,end=None): #[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]
# if end == None:end = len(l) - 1 #start = 13,end = 24
# mid = (end-start) // 2 + start #mid = 18
# if l[mid] > aim:
# find_2(l,aim,start,mid-1) #find_2(l,58,13,17)
# elif l[mid] < aim:
# find_2(l,aim,mid+1,end)
# else:
# print(aim,mid)
#
# def find_2(l,aim,start=0,end=None): #[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]
# if end == None:end = len(l) - 1 #start = 13,end = 17
# mid = (end-start) // 2 + start #mid = 15
# if l[mid] > aim:
# find_2(l,aim,start,mid-1)
# elif l[mid] < aim:
# find_2(l,aim,mid+1,end) #find_2(l,58,16,17) [56,66]
# else:
# print(aim,mid)
#
# def find_2(l,aim,start=0,end=None): #[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]
# if end == None:end = len(l) - 1 #start = 16,end = 17
# mid = (end-start) // 2 + start #mid = 16
# if l[mid] > aim:
# find_2(l,aim,start,mid-1)
# elif l[mid] < aim:
# find_2(l,aim,mid+1,end) #find_2(l,58,17,17) [56,66]
# else:
# print(aim,mid)
#
# def find_2(l,aim,start=0,end=None): #[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]
# if end == None:end = len(l) - 1 #start = 17,end = 17
# if start > end:
# print('找不到这个值')
# mid = (end-start) // 2 + start #mid = 17
# if l[mid] > aim:
# find_2(l,aim,start,mid-1) #find_2(l,58,17,16)
# elif l[mid] < aim:
# find_2(l,aim,mid+1,end)
# else:
# print(aim,mid) def find_2(l,aim,start=0,end=None): #[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]
if end == None:end = len(l) - 1 #start = 0,end = 24
if start <= end:
mid = (end-start) // 2 + start #mid = 12
if l[mid] > aim:
ret = find_2(l,aim,start,mid-1)
return ret
elif l[mid] < aim: #
ret = find_2(l,aim,mid+1,end) #find_2(l,58,13,24)
return ret
else:
return aim,mid
else:
print('找不到这个值')
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(find_2(l,87)) #参数传递
#返回值的问题
#找不到值的问题
#参数太多的问题

阶乘算法,斐波那契数列算法:

#阶乘的计算
#什么叫阶乘: 7 #7*6*5*4*3*2*1 def f(n):
if n == 1:
return 1
else:
return n*f(n-1) # f(3) #斐波那契数列
# 1,1,2,3,5,8,13....
# n = 10
# f(10) = f(8)+f(9)
def fib(n):
if n == 1 or n == 2:
return 1
return fib(n-1)+fib(n-2) print(fib(6)) ####本来会斐波那契了,这样把递归函数套进来,然后就不会了。。。。好难理解啊,怎么这么绕啊

我居然自己搞明白了!我简直太牛逼了!

这是我自己推导的斐波那契数列的思路

# 斐波那契数列:
def fib(n):
if n == 1 or n == 2:
return 1
return fib(n-1) + fib(n-2)
fib(n)
#n=8
def fib(8):#所以fib(8)就是21
if n == 1 or n == 2:
return 1
return fib(8-1) + fib(8-2)#这里fib(7)+fib(6)最终return的结果是21
#请注意要从下往上看!!!!
# 此时需要把return fib(8-1)和fib(8-2)的函数分别求出return的值,然后相加就可以得到fib(8)的值
# 那么fib(8-1)就是fib(7),同理,fib(8-2)就是fib(6)
# 现在我们来分别求出fib(7)的值和fib(6)的值。其实很简单的,就是过程很麻烦重复很多遍,要不断的向下去求值。
# 要求fib(6)的值就把它放进上面的函数公式里即可一层层剥皮得到最下层的结果,再一层层加上来,就实现了递归。
# 开始执行:
def fib(7):#所以fib(7)就是13
if n == 1 or n == 2:
return 1
return fib(7-1)+fib(7-2)#这里fib(6)+fib(5)最终return的结果是13
def fib(6):#所以fib(6)就是8
if n == 1 or n == 2:
return 1
return fib(6-1)+fib(6-2)#这里fib(5)+fib(4)最终return的结果是8
def fib(5):#所以fib(5)就是5
if n == 1 or n == 2:
return 1
return fib(5-1)+fib(5-2)#这里fib(4)+fib(3)最终return的结果是5
def fib(4):#所以fib(4)就是3
if n == 1 or n == 2:
return 1
return fib(4-1)+fib(4-2)#这里fib(3)+fib(2)最终return的结果是3
def fib(3):#所以fib(3)就是2
if n == 1 or n == 2:
return 1
return fib(3-1)+fib(3-2) #这里fib(2)+fib(1)最终return的结果是2
def fib(2):
if n == 1 or n == 2:
return 1 #我们一层一层剥下来,这里就是最底层,现在开始向上一层一层相加

另一种实现方式

def fib():
a = 1
b = 2
while True:
c = a + b
yield c
a = c + b
yield a
b = a + c
yield b obj = fib()
print(next(obj))
print(next(obj))
print(next(obj))
print(next(obj))
print(next(obj))
print(next(obj))
print(next(obj))

三级菜单的递归函数:

menu = {
'北京': {
'海淀': {
'五道口': {
'soho': {},
'网易': {},
'google': {}
},
'中关村': {
'爱奇艺': {},
'汽车之家': {},
'youku': {},
},
'上地': {
'百度': {},
},
},
'昌平': {
'沙河': {
'老男孩': {},
'北航': {},
},
'天通苑': {},
'回龙观': {},
},
'朝阳': {},
'东城': {},
},
'上海': {
'闵行': {
"人民广场": {
'炸鸡店': {}
}
},
'闸北': {
'火车战': {
'携程': {}
}
},
'浦东': {},
},
'山东': {},
} def menu_3(menu):
while True:
for key in menu:
print(key) #北京上海山东
choice = input('选择 : ') #北京
if choice == 'q' or choice == 'b':
return choice
elif choice in menu and menu[choice]: #北京 in menu
borq = menu_3(menu[choice])
if borq == 'q':
return 'q' menu_3(menu)

day15 函数的使用方法:递归函数的更多相关文章

  1. (MTT)连续能量函数最小化方法

    (MTT)连续能量函数最小化方法 Multitarget tracking Multi-object tracking 连续能量函数 读"A.Milan,S. Roth, K. Schind ...

  2. jquery ajax success 函数 异步调用方法中不能给全局变量赋值的原因及解决办法

    jquery ajax success 函数 异步调用方法中不能给全局变量赋值的原因及解决办法   在调用一个jquery的ajax方法时我们有时会需要该方法返回一个值或者给某个全局变量赋值,可是我们 ...

  3. PHP使用内置函数生成图片的方法详解

    原文地址:http://www.poluoluo.com/jzxy/201605/475301.html 本文实例讲述了PHP使用内置函数生成图片的方法.分享给大家供大家参考,具体如下: 第一步:创建 ...

  4. JAVA 主函数(主方法)

    主函数(主方法) 1.public     (访问修饰符,公共的)代表该类或者该方法访问权限是最大的 2.static    代表主函数随着类的加载而加载 3.void    代表主函数没有具体的返回 ...

  5. 【转】Linux时间函数之gettimeofday()函数之使用方法

    原文网址:http://blog.csdn.net/tigerjibo/article/details/7039434 一.gettimeofday()函数的使用方法: 1.简介: 在C语言中可以使用 ...

  6. objective-C学习笔记(四)函数成员:方法(函数)

    函数分为:  全局函数(C语言函数) 成员函数(OBJC方法):实例方法 “-” 和类方法“+”的区别 //这里要区别静态变量(类变量).全局函数.常量的区别 OBJC里面,所有方法默认为公有方法.没 ...

  7. splice()函数的使用方法

    splice()函数的使用方法,这是一个拗口的函数.用起来有点麻烦.图3所看到的是splice函数的功能.将一个列表插入到还有一个列表其中.list容器类定义了splice()函数的3个版本号: sp ...

  8. 模式识别 - libsvm该函数的调用方法 详细说明

    libsvm该函数的调用方法 详细说明 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26261173 须要载入(load)SVM ...

  9. 举例详解Python中的split()函数的使用方法

    这篇文章主要介绍了举例详解Python中的split()函数的使用方法,split()函数的使用是Python学习当中的基础知识,通常用于将字符串切片并转换为列表,需要的朋友可以参考下   函数:sp ...

随机推荐

  1. 清北学堂 清北-Day1-R2-监听monitor

    题目描述 [背景] 不阅读本题的[背景]并不影响通过本题. 三体信息中没有包含对三体⼈⽣物形态的任何描述,⼈类要在四百多年以后才能真正看到三体⼈.在阅读信息时,叶⽂洁只能把三体⼈想象成⼈类的形象. 1 ...

  2. 快速理解VirtualBox的四种网络连接方式

    VirtualBox中有4中网络连接方式: NAT Bridged Adapter Internal Host-only Adapter VMWare中有三种,其实他跟VMWare 的网络连接方式都是 ...

  3. git码云上传本地项目

    可参考:https://blog.csdn.net/huangfei711/article/details/69388230 .在你的项目上鼠标右击点击Git bash git config --gl ...

  4. flask 面试题

    1,什么是Flask,有什么优点?概念解释Flask是一个Web框架,就是提供一个工具,库和技术来允许你构建一个Web应用程序.这个Web应用程序可以是一些Web页面,博客,wiki,基于Web的日里 ...

  5. mysql解决外网不能连接

    mysql解决外网不能连接 Author:SimpleWu 或许有些时候会遇到通过ip地址访问项目的数据库,可是访问失败了. 现在给大家一种解决方案: #进入mysql数据库 USE mysql; # ...

  6. metaclass(元类)

    一.创建类的执行流程 二.元类的认识 什么是元类呢?在Python3中继承type的就是元类 二.元类的示例 方式一: # 方式一 class MyType(type): '''继承type的就是元类 ...

  7. Let the Balloon Rise <map>的应用

    Contest time again! How excited it is to see balloons floating around. But to tell you a secret, the ...

  8. LeetCode(75):分类颜色

    Medium! 题目描述: 给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中,我们使用整数 0. 1 和 2 ...

  9. AI学习吧-购物车-添加商品接口

    create接口流程 需求:向购物车添加商品 流程:写shopping_cart路由--->写ShoppingCart视图函数--->使用Authuser校验用户是否登录--->首先 ...

  10. Chrome开发者控制台操作教程

    1清空控制台 在控制台下有个clear console的按钮,点击的时候会清空控制台. 清空控制台  2让Chrome中的页面可编辑 有的时候我们需要临时改变页面上的文字,图案等信息,一种常见的方法是 ...