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("输入有误请重新输入")
原文地址:https://www.cnblogs.com/bcyczhhb/p/10234297.html