Presentation is loading. Please wait.

Presentation is loading. Please wait.

Recursive program Zhen Jiang West Chester University

Similar presentations


Presentation on theme: "Recursive program Zhen Jiang West Chester University"— Presentation transcript:

1 Recursive program Zhen Jiang West Chester University zjiang@wcupa.edu

2 Outline Review of function/method Introduction Design idea Keys Static Analysis Examples

3 Review of Function/Method Why function/method To avoid copying the same code in many places Format Call Declaration Working procedure Details of the use of function/method Functions without arguments ([2], p120) Functions with arguments ([2], p130) Value and reference parameters ([2], p296) Using object with function, & ([2], p321) Return Using pointer with function (will be reviewed later)

4 Introduction Divide-and-conquer multi-layer job division (job becomes smaller) Results collection Result reporting (to caller)

5 Introduction (cont.) f ( Job ) f ( Job.sub-job1 )f ( Job.sub-job2 ) f ( Job.sub-job1. sub-sub-job1 ) f ( Job.sub-job1. sub-sub-job2 )

6 Keys Division (The assignment and reporting of the requested job is divided into smaller pieces: job division, results collection, and result reporting, in divide-conquer tree by many non-leaf node.) Recursive procedure (ensure each node in the divide-conquer tree has similar procedure that can be written in a general/common format, but more abstract) Terminated condition (decide who will really do the job) Samples to see these keys (in static analysis) Introduction (cont.)

7 Static Analysis Check the whole execution. Think about: You are a computer and run the program statement by statement. Need to check the result after each statement. Show the procedure called at different time.

8 Examples f(int i) { if (i ==0) return 1; else return i*f(i-1); } 4*f(3)3*f(2)2*f(1)1*f(0) 1 1 2 624 f(4)? job divisionResults collection Result reporting Terminated condition General format, all same f(4)f(3)f(2)f(1)f(0)

9 Examples (cont.) f(int i) { if (i <=1) return 1; else return f(i-1)+f(i-2); } f(3)? f(2)+f(1)f(1)+f(0) 1 1 23 f(3)f(2)f(1)f(0)

10 Examples (cont.) f(int i) { int y=i; Static int z=0; z++; if (i <=1) { System.out.println(y+” ”+z); return 1; } else return f(i-1)+f(i-2); } f(3)? f(4)? f(2)+f(1) f(1)+f(0) 11 23 f(3)f(2)f(1)f(0) y=3 z=0 z=1 y=2 z=2 y=1 z=3 1 3 y=0 z=4 0 4 ? 1 f(1) y=1 z=5 1 5

11 Examples (cont.) f(int i) { if (i <=1) return 1; else if (i==3) return f(i-1)-f(i-2); else return f(i-1)+f(i-2); } f(3)? f(2)-f(1)f(1)+f(0) 11 21 f(3)f(2)f(1)f(0)


Download ppt "Recursive program Zhen Jiang West Chester University"

Similar presentations


Ads by Google