一 递归函数

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. 【剑指offer】单链表尾部插入一个节点

    #include <iostream> using namespace std; //链表结构体 struct ListNode { int m_Value; ListNode *next ...

  2. iptables学习

    droidwall.sh #!/system/bin/sh IPTABLES=iptables BUSYBOX=busybox GREP=grep ECHO=echo # Try to find bu ...

  3. 如何用jar命令生成可执行的jar文件

    如果你已经把zh.java文件生成了zh.class文件 如果zh.class的路径是bin/com/zhang/zh.class 则在bin目录下放一个manifest.mf文件,文件内容如下: M ...

  4. [PHP]PHP的session机制,配置与高级应用

    ---------------------------------------------------------------------------------------------------- ...

  5. KVM虚拟化技术(二)KVM介绍

    KVM:Kernel Virtual Machine KVM是基于虚拟化扩展的x86硬件,是Linux完全原生的全虚拟化解决方案.部分半虚拟化支持,主要是通过半虚拟网络驱动程序的形式用于Linux和W ...

  6. C#图像处理:Stream 与 byte[] 相互转换,byte[]与string,Stream 与 File 相互转换等

    C# Stream 和 byte[] 之间的转换 一. 二进制转换成图片 MemoryStream ms = new MemoryStream(bytes); ms.Position = 0; Ima ...

  7. jquery 中attr()的一个用法

    html 如下: <ul><li><img src="./img/addface_icon.png" alt="">< ...

  8. biopython

    转载Part 2  Biopython的重头戏-生物学中序列的处理 Biopyhton的Seq和Python中标准字符串有两大重要的不同之处:首先,他们的处理方法不同.Seq适用于很多不同字符串的用的 ...

  9. JDK各个版本比较 JDK5~JDK10

    JDK1.5新特性: 1.自动装箱与拆箱: 2.枚举 3.静态导入,如:import staticjava.lang.System.out 4.可变参数(Varargs) 5.内省(Introspec ...

  10. JMeter学习(二十六)逻辑控制器(转载)

    转载自 http://www.cnblogs.com/yangxia-test JMeter中的Logic Controller用于为Test Plan中的节点添加逻辑控制器. JMeter中的Log ...