-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_py_abstract3_Scope_recursion.py
More file actions
112 lines (76 loc) · 2.21 KB
/
test_py_abstract3_Scope_recursion.py
File metadata and controls
112 lines (76 loc) · 2.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# 作用域与全局变量
a_external = 10
def func(param):
a_external = param # 这样全局变量并不会被改变(此处不同于c)
return
func(11)
print(a_external)
def func1(param):
globals()['a_external'] = param # globals()['a_external']以字典的方式找到了全局变量的内存,因而可以改变全局变量(局部变量使用locals())
return
func1(11)
print(a_external)
def func2(param):
global a_external # 方法二,明确地指出这是一个全局变量
a_external = param
return
func2(111)
print(a_external)
# python地函数嵌套,目前不使用,待用时学习
# 递归--调用自身
# 递归由两部分组成:
# 基线条件:满足条件时返回一个值
# 递归条件:解决递推问题
# 实例1:阶乘
def factorial(n):
result = n
for i in range(1, n):
result *= i
return result
print(factorial(5))
# 递归阶乘方法An=n*An-1
def factorial_rec(n):
if n == 1:
return 1
else:
return n * factorial(n - 1)
print(factorial_rec(5))
# 同理幂函数
def power(x, n):
result = 1
for i in range(0, n):
result *= x
return result
print(power(2, 3))
def power_rec(x, n):
if (n == 0):
return 1
else:
return x * power_rec(x, n - 1)
print(power_rec(2, 3))
# 递归实现二分法查找,要求有序
def binSearch(list, target_num, lower=0, upper=None):
if (upper is None):
upper = len(list) - 1
if lower == upper:
if (target_num == list[lower]):
print('在第{}位置找到{}'.format(lower, target_num))
else:
print('没有找到')
return upper
else:
middle = (lower + upper) // 2
if list[middle] < target_num:
return binSearch(list, target_num, middle + 1, upper)
else:
return binSearch(list, target_num, lower, middle) # 因为是包含大于和等于,所以不需要对middle-1了,等于地时候直接lower=upper
list = [1, 2, 4, 6, 7, 9, 12, 15]
print(binSearch(list, 12))
# # 补充filter函数返回真值条件下地元素
# def func(x):
# return x.isalnum()
#
#
# seq = ["foo", "x41", "?!"]
# a = list(filter(func, seq))
# print(a)