งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

1. บทนำ การทำงานภายใน method หนึ่งสามารถ เรียกใช้ method อื่นได้ ภายใน method ที่ถูกเรียกก็อาจจะไปเรียก method อื่นต่อไปเป็นทอดๆ เราสามารถเรียกใช้ method.

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "1. บทนำ การทำงานภายใน method หนึ่งสามารถ เรียกใช้ method อื่นได้ ภายใน method ที่ถูกเรียกก็อาจจะไปเรียก method อื่นต่อไปเป็นทอดๆ เราสามารถเรียกใช้ method."— ใบสำเนางานนำเสนอ:

1 1

2 บทนำ การทำงานภายใน method หนึ่งสามารถ เรียกใช้ method อื่นได้ ภายใน method ที่ถูกเรียกก็อาจจะไปเรียก method อื่นต่อไปเป็นทอดๆ เราสามารถเรียกใช้ method ที่ใดก็ได้ ดังนั้น จึง ไม่แปลกที่ –method a เรียกใช้ method b –method b เรียกใช้ method a –method a เรียกใช้ตัวเอง 2

3 METHOD แบบเรียกตัวเองซ้ำ (RECURSIVE METHOD) 3

4 Method แบบเรียกซ้ำ คือการที่ method เรียกใช้งาน method ของ ตัวเองซ้ำๆภายใน method นั้น คล้ายกับการทำงานแบบ loop แต่จะไม่คำสั่ง while หรือ for ปรากฎอยู่เลย 4

5 Recursive Programming การเขียนโปรแกรมให้ method ใด method หนึ่ง หรือ หลาย method เรียกใช้ method ตัวเองซ้ำภายใน method นั้นไปเรื่อยๆ – จนกว่าจะหลุดพ้นจากเงื่อนไขที่ตั้งไว้ 5

6 Method แบบเรียกซ้ำ ทำไมต้องเขียน method แบบเรียกตัวเองซ้ำๆ – บางกรณีการเขียนโปรแกรมลักษณะนี้ทำให้ได้ โปรแกรมที่สั้น – สามารถเขียนคำสั่งได้ตรงไปตรงมาตามคำนิยาม ทางคณิตศาสตร์ – ได้โปรแกรมที่สวย ( ขึ้นกับรสนิยม ) อ่านเข้าใจง่าย 6

7 ตัวอย่าง recursive method กําหนดให้เมท็อด f(…) ใช้หาผลบวกของตวัเล ขจํานวนเต็มตั้งแต่ 0 จนถึง n โดยที่ f(n) = ( … +n) 7

8 ขั้นตอนการทำงานของ recursive method ประกอบด้วย 2 กรณี 1.Recursion case เป็นกรณีที่ method คืนค่าที่ เกิดจากการเรียกใช้ method ของตัวมันเอง – เช่น return fac(n-1), return fibo(n-1) + fibo(n- 2) เป็นต้น – เสมือนเป็นการเรียกซ้ำ เมท็อดตัวเองอีกครั้งอยู่ ภายใน method นั้น โดยจะเรียกซ้ำแบบนี้ไปเรื่อยๆ จนกว่าจะเข้าสู่ Base case จึงจะหยุดการเรียกซ้ำ 2.Base case เป็นกรณีสิ้นสุดการเรียกตัวเองซ้ำ ซึ่ง method จะคืนค่าคงที่ค่าใดค่าหนึ่งออกมา เช่น return 0, return 1 เป็นต้น 8

9 จงแสดงผลลัพธ์จากการเรียกใช้ recursive method 9 การเรียกใช้คำตอบ mul(4,3)3 + mul(3, 3) 3 + (3 + mul(2,3)) (3 + mul(1,3)) (3 + mul(0,3)) = 12 mul(5,7) = 35 mul(20,10) … = 200

10 จงแสดงผลลัพธ์จากการเรียกใช้ recursive method 10 การ เรียกใ ช้ คำตอบ gcd(2 8,16) gcd(16, 12) gcd(12, 4) 4 gcd(9, 14) gcd(14, 9) gcd(9,5) gcd(5,4) gcd(4,1) 1 การ เรียกใ ช้ คำตอบ gcd(7 5,30) gcd(30,15) 15

11 จงแสดงผลลัพธ์จากการเรียกใช้ recursive method 11 expo(3)

12 Recursive อย่างง่าย ขั้นตอนการแปลงสมการคณิตศาสตร์ให้เป็น recursive method แบบง่าย EX. จงหาผลบวกของตัวเลขจํานวนเต็มตั้งแต่ 0 จนถึง n ( โดยที่ n ≥ 0) 1. แปลงโจทย์ที่กําหนดให้ เป็นสมการหรือฟังก์ชัน ทางคณิตศาสตร์ หรือสมการในรูปทั่วไป 2. แยกสมการออกเป็น 2 กรณี ( หรืออาจจะมากกว่า 2 กรณีก็ได้ ) (1) กรณีที่สมการเท่ากับค่าของพจน์แรกเพียงพจน์เดียวซึ่ง จะได้ (2) กรณีที่สมการอยู่ในรูปทั่วไป แต่จะดึงพจน์สุดท้าย ออกมาให้เห็นในสมการซึ่งจะได้ 12

13 Recursive อย่างง่าย ขั้นตอนการแปลงสมการคณิตศาสตร์ให้เป็น recursive method แบบง่าย EX. จงหาผลบวกของตัวเลขจํานวนเต็มตั้งแต่ 0 จนถึง n ( โดยที่ n ≥ 0) 3. แปลงสมการทั้ง 2 กรณีที่ได้จากขั้นตอนที่ 2 ให้ เป็น method โดยใช้คําสั่ง if-else เพื่อระบุ เงื่อนไขของแต่ละกรณี ซึ่งจะให้กรณีที่ 1 เป็น Base case และกรณีที่ 2 เป็น recursion case 13

14 ตัวอย่าง 14 จงพิจารณาสมการต่อไปนี้เพื่อเขียนเป็น method f(…) ที่ ทำงานแบบ recursive โดยให้รับค่า n เข้ามาทาง พารามิเตอร์ n=1, f(1) = 1 f(n) = f(n-1) + (1/n 3 )

15 ตัวอย่าง 15 จงพิจารณาสมการต่อไปนี้เพื่อเขียนเป็น method f(…) ที่ ทำงานแบบ recursive โดยให้รับค่า n เข้ามาทาง พารามิเตอร์ f(1) = (1) = 3 f(n) = f(n-1) + (n n + 2n)

16 ตัวอย่างการเขียน method แบบ เรียกซ้ำ ผลบวก … + n – เราสามารถเขียน method หาผลบวก int sum(int n) – เพื่อคืนผลบวก … + n ได้ไม่ยาก – สมมุติว่าไม่ใช้สูตร เราคงเขียน method โดยการใช้ loop 16

17 ตัวอย่างการเขียน method แบบ เรียกซ้ำ ผลบวก … + n – จากนิยาม S n = S n-1 + n เมื่อ n > 0 และ S 0 = 0 – เราสามารถเขียน method แบบเรียกซ้ำ สั้นๆ ได้ ดังนี้ public static int sum(int n) { if(n==0) { return 0; } else{ sum = sum(n-1) + n; } return sum; } 17

18 จำนวนฟิโบนักชี จำนวนฟิโบนักชี (Fibonacci number) คือ จำนวนในลำดับ 0, 1, 1, 2, 3, 5, 8, 13, … ให้ f n คือ จำนวนฟิโบนักชีตัวที่ n จะได้ว่า f n = f n-1 + f n-2 เมื่อ n >= 2 และ f 0 = 1, f 1 = 1 18

19 จำนวนฟิโบนักชี นิยาม f n = f n-1 + f n-2 เมื่อ n >= 2 และ f 0 = 1, f 1 = 1 ลักษณะปัญหาเช่นนี้ เหมาะที่จะแปลงเป็น method แบบเรียกซ้ำ ลองเขียนโปรแกรมกัน ^^ 19

20 จำนวนฟิโบนักชี public static int fib(int n){ if(n <= 1) { return n; // f 0 = 1, f 1 = 1 } else { return fib(n-1) + fib(n-2) ;// f n = f n- 1 + f n-2 } } 20


ดาวน์โหลด ppt 1. บทนำ การทำงานภายใน method หนึ่งสามารถ เรียกใช้ method อื่นได้ ภายใน method ที่ถูกเรียกก็อาจจะไปเรียก method อื่นต่อไปเป็นทอดๆ เราสามารถเรียกใช้ method.

งานนำเสนอที่คล้ายกัน


Ads by Google