一 递归函数

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

递归函数 day17的更多相关文章

  1. day17递归函数(二分法查找)

    递归函数: 如果函数包含了对其自身的调用,该函数就是递归的: example 1:二分法查找的实现: def find_recursion(l,aim,start=0,end=None): #end不 ...

  2. day17.初识递归函数

    在一个函数调用这个函数本身就是递归函数 递归函数默认深度最大997 n = 0 def func(): global n n += 1 print('hello,world') print(n) fu ...

  3. day17:递归函数

    1,递归函数是一个函数体系,非常的难 2,练习题一 # 3.用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb name=['alex','wupeiqi','yuanhao',' ...

  4. javascript中的递归函数

    正常的递归函数如下: function factorial(num){ ){ ; }else{ ); } } 这个函数表面看起来还ok,但如果我们执行下面代码就会出错. var jenny = fac ...

  5. JS函数相关及递归函数的使用

    JS函数相关及递归函数的使用 通用js程序: function 函数名(参数列表) { 函数体 } 可使用alert()输出,也可用return返回值. alert与return区别: functio ...

  6. python3--函数(函数,全局变量和局部变量,递归函数)

    1.1函数 1.1.1什么是函数 函数就是程序实现模块化的基本单元,一般实现某一功能的集合.函数名:就相当于是程序代码集合的名称参数:就是函数运算时需要参与运算的值被称作为参数函数体:程序的某个功能, ...

  7. Python之路 day3 递归函数

    #!/usr/bin/env python # -*- coding:utf-8 -*- #Author:ersa """ 在函数内部,可以调用其他函数.如果一个函数在内 ...

  8. Python3学习(二)-递归函数、高级特性、切片

    ##import sys ##sys.setrecursionlimit(1000) ###关键字参数(**关键字参数名) ###与可变参数不同的是,关键字参数可以在调用函数时,传入带有参数名的参数, ...

  9. 浅谈-js递归函数

    所谓的递归函数就是在函数体内调用本函数.使用递归函数一定要注意,处理不当就会进入死循环.递归函数只有在特定的情况下使用 ,比如阶乘问题 下面我们就做一个10以内的阶乘试试看吧: [Ctrl+A 全选 ...

随机推荐

  1. ReultSet有什么作用和使用

    结果集(ResultSet)是数据中查询结果返回的一种对象,可以说结果集是一个存储查询结果的对象,但是结果集并不仅仅具有存储的功能,他同时还具有操纵数据的功能,可能完成对数据的更新等. int col ...

  2. MySQL内连接,左(外)连接,右(外)连接

    用两个表(a_table.b_table),关联字段a_table.a_id和b_table.b_id来演示一下MySQL的内连接.外连接( 左(外)连接.右(外)连接.全(外)连接). MySQL版 ...

  3. Python基础学习Day5 字典的增、删、改、查的用法 分别赋值

    一.字典的介绍 字典:字典是Python的基础数据类型之一:字典可以存储大量数据,关系型数据. 同样是Python中唯一的映射类数据类型.         数据类型的分类:        可变的数据类 ...

  4. webpack 中使用 vue-router 注意

    //render 会把el指定的容器中所有的内容都清空把#app也会去掉 都在c(app)其中的app组件中展示 所有router-link router-view要写在app这个组件里面   //A ...

  5. ASP.NET 三级联动

    三级联动就是用三个下拉列表框DropDownList,每个里面添加相应的东西,在第一个列表框中选择一个值,第二三个列表框都会根据第一个选择进行相应的变化,在第二个列表框中选择一个值,第三个列表框也会根 ...

  6. Latex公式示范

    \(A_\alpha(x)\)      \(\qquad\)      \(a^2+b^2=c^2 \)      \(\qquad\)      \(\sum\limits_{m=0}^\inft ...

  7. easyui-属性表格-easyui-propertygrid-列名显示英文官方文档无修改方案

    修改值name value值为中文示例步骤: 1.<table 中    class="easyui-propertygrid" 中的data-options属性中加入  c ...

  8. VSC KeyNote

    [VSC KeyNote] 1.前后跳转. Alt + LeftArrow, Alt + RightArrow 2.缩进问题. vsc默认缩进为4,但js代码里缩进依旧是2. 因为vscode默认启用 ...

  9. SQLMAP自动注入(一):sqlmap的简单使用和配合burpsuite使用

    python编写,开源 检测方式 基于布尔的盲注检测 基于时间的盲注检测 基于错误的检测 基于union的检测 基于堆叠的检测 优点 数据库直连 -d cookie过期后自动更新cookie信息 可以 ...

  10. MyEclipse2014安装aptana插件

    1. 2. aptana插件下载地址 链接: https://pan.baidu.com/s/1sloiAK1 密码: a1nh 3. 4. 确认是否安装成功