CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
jackfrued

CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!

GitHub Repository: jackfrued/Python-100-Days
Path: blob/master/Day31-35/code/homework01.py
Views: 729
1
# 经典递归求解问题:
2
# 1. 迷宫寻路
3
# 2. 汉诺塔(梵塔)
4
# 3. 骑士周游
5
# 4. 八皇后
6
7
8
def f(n: int, m=1) -> int:
9
if n == 0 or n == 1:
10
return m
11
return f(n - 1, n * m)
12
13
14
def sum(n: int) -> int:
15
if n == 1:
16
return 1
17
return n + sum(n - 1)
18
19
20
def steps(n: int, m={}) -> int:
21
if n < 0:
22
return 0
23
elif n == 0:
24
return 1
25
else:
26
try:
27
return m[n]
28
except:
29
m[n] = steps(n - 1) + steps(n - 2) + steps(n - 3)
30
return m[n]
31
32
33
def list_depth(items: list) -> int:
34
max_depth = 1 if isinstance(items, list) else 0
35
if max_depth:
36
for item in items:
37
if isinstance(item, list):
38
max_depth = max(max_depth, list_depth(item) + 1)
39
return max_depth
40
41
42
43
def main():
44
mylist = [1, ['a', ['b', ['c']]],[100, [200, 300, [400, [500, [600, [700]]]]]]]
45
thylist = [[], [[[]]], [[], []]]
46
print(list_depth(mylist))
47
print(list_depth(thylist))
48
49
50
if __name__ == '__main__':
51
main()
52
53