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

    1.递归函数

    1.1来个例子

    1 def f(n):
    2     if n == 1:
    3         return 1
    4     return n * f(n-1)
    5 print(f(5))

    结果为:120 即5的阶乘

    通过这个例子来看递归函数有着两个特点

    (1)调用自己

    (2)结束条件(在赋值最后一项的时候同时shutdown)

    2.fibonacii数列

    fibonacci数列形式 0 1 1 2 3 5 8 13 21 34.。。。

    2.1函数实现

    1 def fibo(n):
    2     if n <= 1:
    3         return n
    4     return fibo(n-1)+fibo(n-2)
    5 print(fibo(5))

    这里的数列是从第0项开始算的,所以第五项是5

    2.2循环实现

    1 a = 0
    2 b = 1
    3 for i in range(8):
    4     b,a = a+b,b        
    5     # c = b            
    6     # b =a +b
    7     # a = c
    8 print(b)

    上述代码中的

    b,a = a+b,b 

    不是在先赋值b再赋值a的意思而是转换过程相当于注释中的内容。

    2.3递归效率

    递归函数相当于1000辆车在高速上堵车,第一辆车在抛锚的时候必须等到第一千辆车停止才会修好。而结果出来的时候相当于第一千辆车在此启动的时候。

    3.重要的内置函数

    3.1filter

    1 a = ["d","dd","s"]
    2 def f(s):
    3     if s != "s":
    4         return s
    5 ret = filter(f,a)
    6 print(ret)

    结果为

    1 <filter object at 0x000002092077F470>
    2 ['d', 'dd']

    可以看到返回值为一个filter object的类型,是一个可迭代器,显示需要转换类型或者遍历。

    3.2map

    1 a = ["d","dd","s"]
    2 def f2(s):
    3     return s + "gagaga"
    4 ret2 = map(f2,a)         
    5 print(ret2)
    6 print(list(ret2))

    结果为

    <map object at 0x00000277FBDCF470>
    ['dgagaga', 'ddgagaga', 'sgagaga']

    3.3reduce

    1 from functools import reduce
    2 def ji(x,y):
    3     return x + y
    4 print(reduce(ji,range(1,101)))

    结果

    5050 实现的结果是前100项的和。注意这里reduce返回的值是一个数。运算模式相当于将前两个数处理结果和下一个数处理。

    3.4lambda

    1 print(list(map(lambda x:x*x,[1,2,3,4])))

    结果为

    [1,4,9,16]

    lambda是一个匿名函数,即没有名字。存在的意义在你想做一件很简单的操作但是用函数太麻烦,就利用lambda做成一行避免污染内存。

    1 a = lambda x,y:x*y
    2 print(a(2,3))

    此段代码明显地表明了lambda是一个函数

  • 相关阅读:
    利用 .NET Framework 命令行工具
    和AI机器人Alice的一段聊天记录
    WINDOWS自启动程序的10大隐身之所
    开放式开发/开源项目TimeDog[C#WindowsApp]
    Microsoft月度中文速递
    新安装的VS2003出现了一个问题不能新建项目!
    实例构造器和类型构造器的一些比较
    C++ 模板里面的typename
    vim 折叠的用法
    Redis3:持久化
  • 原文地址:https://www.cnblogs.com/khal-Cgg/p/5850368.html
Copyright © 2011-2022 走看看