View
216
Download
0
Category
Preview:
Citation preview
8/18/2019 WDWWDWD
1/5
Stella Connaughton10.5.15
Tracing & Understanding Algorithms1. What does the following algorithm do?
Divide an integer by 2.
2. TRA!"# A$#%R!T!'
n(m)*
1. while x=/= 0 repeat the following
(num=1) (result=””)
2. appendLeft num mod 2 to result
(num=6)(result=”0”)
3. set num to num div 2
(num=3) (result=”0”) 4. end while loop
(num=3) (result=”0”)
(loop #2) num=3
1. while x=/= 0 repeat the following
(num=3)(result=””)
2. appendLeft num mod 2 to result
(num=3)(result=”1”)3. set num to num div 2
(num=1) (result=”1”)
4. end while loop
(num=1) (result=”1”)
(loop # 3) num=1
1. while x=/= 0 repeat the following
(num=1)(result=””)2. appendLeft num mod 2 to result
(num=1) (result=”1”)
3. set num to num div 2
(num=0) (result=”1”)
4. end while loop
8/18/2019 WDWWDWD
2/5
Stella Connaughton10.5.15
(num=0, so no more loops)(result=”1”)
Num=13
1. while x=/= 0 repeat the following
(num=13) (result=””)
2. appendLeft num mod 2 to result
(num=13) (result=”1”)
3. set num to num div 2
(num=6) (result=”1”)
4. end while loop
(num=6) (result=”1”)
(loop 2) num=6
1. while x=/= 0 repeat the following
(num=6) (result=””)
2. appendLeft num mod 2 to result
(num=6) (result=”0”)
3. set num to num div 2
(num=3) (result=”0”)
4. end while loop
(num=3) (result=”0”)
(loop 3) num=3
1. while x=/= 0 repeat the following
(num=3) (result=””)
2. appendLeft num mod 2 to result
(num=3) (result=”1”)
3. set num to num div 2
(num=1) (result=”1”)
4. end while loop(num=1) (result=”1”)
(loop 4) num=1
1. while x=/= 0 repeat the following
(num=1) (result=””)
2. appendLeft num mod 2 to result
8/18/2019 WDWWDWD
3/5
Stella Connaughton10.5.15
(num=1) (result=”1”)
3. set num to num div 2
(num=0) (result=”1”)
4. end while loop
(num=0, so no more loops) (result=”1”)
Num=163
1. while x=/= 0 repeat the following
(num=163) (result=””)
2. appendLeft num mod 2 to result
(num=163) (result=”1”)
3. set num to num div 2
(num=!1) (result=”1”)
4. end while loop
(num=!1) (result=”1”)
(loop 2) num=!1
1. while x=/= 0 repeat the following
(num=!1) (result=””)
2. appendLeft num mod 2 to result
(num=!1) (result=”1”)
3. set num to num div 2
(num=40) (result=”1”)
4. end while loop
(num=40) (result=”1”)
(loop 3) num=40
1. while x=/= 0 repeat the following
(num=40) (result=””)
2. appendLeft num mod 2 to result
(num=40) (result=”0”)3. set num to num div 2
(num=20) (result=”0”)
4. end while loop
(num=20) (result=”0”)
(loop 4) num=20
8/18/2019 WDWWDWD
4/5
Stella Connaughton10.5.15
1. while x=/= 0 repeat the following
(num=20) (result=””)
2. appendLeft num mod 2 to result
(num=20) (result=”0”)
3. set num to num div 2
(num=10) (result=”0”)
4. end while loop
(num=10) (result=”0”)
(loop ") num=10
1. while x=/= 0 repeat the following
(num=10) (result=””)
2. appendLeft num mod 2 to result
(num=10) (result=”0”)
3. set num to num div 2
(num=") (result=”0”)
4. end while loop
(num=") (result=”0”)
(loop 6) num="
1. while x=/= 0 repeat the following
(num=") (result=””)
2. appendLeft num mod 2 to result
(num=") (result=”1”)
3. set num to num div 2
(num=2) (result=”1”)
4. end while loop
(num=2) (result=”1”)
(loop #) num=2
1. while x=/= 0repeat the following
(num=2) (result=””)
2. appendLeft num mod 2 to result
(num=2) (result=”0”)
3. set num to num div 2
(num=1) (result=”0”)
8/18/2019 WDWWDWD
5/5
Stella Connaughton10.5.15
4. end while loop
(num=1) (result=”0”)
(loop !) num=1
1. while x=/= 0 repeat the following
(num=1) (result=””)
2. appendLeft num mod 2 to result
(num=1) (result=”1”)
3. set num to num div 2
(num=0) (result=”1”)
4. end while loop
(num=0, so no more loops) (result=”1”)
Recommended