zoukankan      html  css  js  c++  java
  • 2019.1.7 递归,迭代相关内容

     1 #匿名函数
     2 #匿名函数与普通函数在使用上的区别
     3 #使用匿名函数的优势:lambda使用代码精简,不用考虑命名的问题,简化代码的可读性
     4 lambda x:2*x+1
     5 g=lambda x:2*x+1 #这就是匿名函数
     6 b=g(5)
     7 print (b)
     8 
     9 lambda x,y:x+y
    10 g=lambda x,y:x+y
    11 b=g(5,8)
    12 print (b)
    13 
    14 #两个牛逼的BIF
    15 #1.filter()过滤器:对sequence中的item依次执行,function(item),将执行结果为True(!=0)
    16 #的item组成一个 List/String/Tuple(取决于sequence的类型)返回,false则退出(0),
    17 #进行过滤。
    18 a=filter(None,[1,0,3.15,8,9,True,False,"中国"])
    19 b=list(a)
    20 print(b) #fileter 函数把它的内容进行过滤,把不为空,不为假的内容留下来。
    21 
    22 #奇数的输出
    23 def odd(x):
    24     return x %2
    25 temp=range(10)
    26 show=filter(odd,temp)
    27 print(list(show))
    28 
    29 b=list(filter(lambda x:x %2 ,range(20)))
    30 print(b)
    31 #输出偶数
    32 b=list(filter(lambda x:x %2==0 ,range(20)))
    33 print(b)
    34 
    35 def testmod(x):
    36     for r in range(1,x):
    37         if r%2==0:
    38            print(r,end=" ")
    39 print(testmod(30))
    40 
    41 #map()映射:对sequence中的iterm 依次执行function(item)
    42 #执行结果输出为list
    43 
    44 b=list(map(lambda x:x * 2 ,range(10))) #map为映射
    45 print(b)
    46 
    47 
    48 #汉诺塔游戏
    49 #谢尔宾斯基三角形
    50 #递归:程序调用自身的编程技巧称为递归(recursion)。一个过程或函数在其定义或说明
    51 #中有直接或间接调用自身的一种方法,它通常把一个大型复杂问题层层转化为一个与原
    52 #问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需
    53 #的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象
    54 #的无限集合。一般来说,递归需要有边界条件,递归前时段和递归返回段。当边界条件不
    55 #满足时,递归前进,当边界条件满足时,递归返回。
    56 #构成递归需具备的条件:
    57 #子问题须与原始问题为同样的事,且更为简单
    58 #不能无限制地调用本身,须有个出口,化简为非递归状况处理。
    59 #递归可使用 CTR+C 强制停止
    60 # import sys
    61 # sys.setrecursionlimit(100) 设置递归的深度为100
    62 
    63 #写一个阶乘的函数 从1连乘到n ,改变下运算符号,也可连加。
    64 def factorial(n):
    65     result=n
    66     for i in range(1,n):
    67         result *=i
    68     return result #这个返回,老是忘了和for 对齐。
    69 number=int(input("请输入一个正整数:"))
    70 result=factorial(number)
    71 print("%d的阶乘是:%d" %(number,result))
    72 
    73 #用递归的方法如下:
    74 def factorial(n):
    75     if n==1:
    76         return 1
    77     else:
    78         return n*factorial(n-1)
    79         
    80 number=int(input("请输入一个正整数:"))
    81 result=factorial(number)
    82 print("%d的阶乘是:%d" %(number,result))
    83 
    84 #斐波那契数列(Fibonacci) 0,1,1,2,3,5,8,13,21,34,55,89,144
    85 
    86 
    87 #题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,
    88 #小兔子长到第三个月后每个月又生一对兔子,
    89 #假如兔子都不死,问每个月的兔子总数为多少?
    90 month=input("请输入月份:")
    91 if month.isdigit():
    92     month=int(month)
    93     a=0
    94     b=1
    95     for i in range(month-1):
    96         a,b=b,a+b
    97     print("%d月份以后兔子有%d对"%(month,b))
    98 else:
    99     print("输入有误请重新输入")
  • 相关阅读:
    【python爬虫实战】使用词云分析来分析豆瓣影评数据
    【python爬虫实战】爬取豆瓣影评数据
    【个人博客设计】开发工具篇
    使用xmake优雅地描述工程
    使用lua实现try-catch异常捕获
    tbox新增stackless协程支持
    如何快速构建一个简单的程序
    手写数字识别系统之倾斜矫正
    手写数字识别系统之图像分割
    聊聊原子操作那些事
  • 原文地址:https://www.cnblogs.com/bcyczhhb/p/10234297.html
Copyright © 2011-2022 走看看