File tree Expand file tree Collapse file tree 1 file changed +44
-1
lines changed
Students/RPerkins/session02 Expand file tree Collapse file tree 1 file changed +44
-1
lines changed Original file line number Diff line number Diff line change 1- def Ack (m ,n ):
1+ __author__ = 'Robert W. Perkins'
2+
3+
4+ def ack (m , n ):
5+ """Return the result of the Ackerman function on m and n"""
6+ if m < 0 or n < 0 :
7+ return None
8+ elif m == 0 :
9+ return n + 1
10+ elif m > 0 and n == 0 :
11+ return ack (m - 1 , 1 )
12+ elif m > 0 and n > 0 :
13+ return ack (m - 1 , ack (m , n - 1 ))
14+
15+ if __name__ == "__main__" :
16+ assert ack (- 1 , 2 ) == None
17+ assert ack (2 , - 1 ) == None
18+ assert ack (- 1 , - 1 ) == None
19+ assert ack (0 , 0 ) == 1
20+ assert ack (0 , 1 ) == 2
21+ assert ack (0 , 2 ) == 3
22+ assert ack (0 , 3 ) == 4
23+ assert ack (0 , 4 ) == 5
24+ assert ack (1 , 0 ) == 2
25+ assert ack (1 , 1 ) == 3
26+ assert ack (1 , 2 ) == 4
27+ assert ack (1 , 3 ) == 5
28+ assert ack (1 , 4 ) == 6
29+ assert ack (2 , 0 ) == 3
30+ assert ack (2 , 1 ) == 5
31+ assert ack (2 , 2 ) == 7
32+ assert ack (2 , 3 ) == 9
33+ assert ack (2 , 4 ) == 11
34+ assert ack (3 , 0 ) == 5
35+ assert ack (3 , 1 ) == 13
36+ assert ack (3 , 2 ) == 29
37+ assert ack (3 , 3 ) == 61
38+ assert ack (3 , 4 ) == 125
39+ # max recursion depth exceeded after this point
40+ #assert ack(4, 0) == 2**2**2-3
41+ #assert ack(4, 1) == 2**2**2**2-3
42+ #assert ack(4, 2) == (2**65536)-3
43+ #assert ack(4, 3) == (2**2**65536)-3
44+ #assert ack(4, 4) == (2**2**2**65536)-3
You can’t perform that action at this time.
0 commit comments