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

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

ระหว่างการออกแบบเขียน โปรแกรมแบบบนลงล่าง (Top-down Design) จะมีงานย่อย (Subtask) เพื่อ แก้ปัญหาในแต่ละเรื่อง และผู้เขียน โปรแกรมต้องการใช้งานย่อยใน ลักษณะที่เรียกตัวเองขึ้นมาทำงาน.

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


งานนำเสนอเรื่อง: "ระหว่างการออกแบบเขียน โปรแกรมแบบบนลงล่าง (Top-down Design) จะมีงานย่อย (Subtask) เพื่อ แก้ปัญหาในแต่ละเรื่อง และผู้เขียน โปรแกรมต้องการใช้งานย่อยใน ลักษณะที่เรียกตัวเองขึ้นมาทำงาน."— ใบสำเนางานนำเสนอ:

1 ระหว่างการออกแบบเขียน โปรแกรมแบบบนลงล่าง (Top-down Design) จะมีงานย่อย (Subtask) เพื่อ แก้ปัญหาในแต่ละเรื่อง และผู้เขียน โปรแกรมต้องการใช้งานย่อยใน ลักษณะที่เรียกตัวเองขึ้นมาทำงาน ลักษณะของฟังก์ชั่นมีความรอบรัดสั้น กว่าแบบวนลูป ซึ่งเป็นการตรวจสอบ กฎเกณฑ์ที่กำหนดขึ้นมาทาง คณิตศาสตร์ กำหนดให้มีการเรียก ตัวเองขึ้น บทที่ 7 รีเคอร์ซีฟ

2 การทำงานประกอบด้วย 2 ส่วน คือ 1. กรณีพื้นฐาน (Base Case) เป้น ส่วนที่ค่าของฟังก์ชันสอดคล้องหรือ เท่ากับค่าของพารามิเตอร์ที่ส่งมา หรือปัญกาได้ถูกต้องแก้ไขเพียงพอ แล้ว ไม่มีการเรียกตัวเองขึ้นมา ทำงานอีก รีเคอร์ซีฟ ( ต่อ )

3 2. เรียกตัวเอง (Recursive Call) เป็น ส่วนที่ค่าของฟังก์ชันที่ถูกเรียก นำมาใช้กับค่าของพารามิเตอร์ที่ส่งมา หรือปัญหายังแก้ไขไม่เพียงพอ จะต้องเรียกตัวเองขึ้นมาทำงานต่อไป จนกว่าจะได้เป็นกรณีพื้นฐานจึงจบการ ทำงาน

4 โจทย์ 2^5 ครั้งที่ 1 2*2424 ครั้งที่ 2 2*2* 2323 ขั้นตอนการเรียกตัวเองทำงานของการหาค่าเลขยกกำลัง

5 ครั้งที่ 3 2*2* 2 *2 ครั้งที่ 4 2*2* 2 *2*2121

6 ครั้งที่ 5 2*2* 2 *2*2 * 2020

7 ครั้งที่ 6 2*2* 2 *2*2 * 2=1

8 ครั้งที่ 1 2*2* 2 *2*2 * 2=1 ขั้นตอนการถอยกลับทางเมของการหาค่าเลขยกกำลัง โจทย์ 2^5

9 ครั้งที่ 2 2*2* 2 *2*2 * 2020

10 ครั้งที่ 4 2*2* 2 *2 ครั้งที่ 3 2*2* 2 *2*2121

11 ครั้งที่ 6 2*2424 ครั้งที่ 5 2*2* 2323

12 การทำงานของฟังก์ชัน Power #include #include double power(double x,int n){ -- ประกาศตัวแปรเป็น double และ int if(n==0) return 1; -- คำสั่งการตรวจสอบถ้า n เท่ากับ 0 ให้ ส่งค่ากลับมาเป็น 1

13 else return x*power(x,n-1); -- ให้ส่งค่ากลับมาโดยให้ตัวแปร x คูณกับ เลขยกกำลังคือ x และ n-1 หรือนำค่า x แล้วนำค่าตัวแปร x มาเลข ยกกำลังกับตัวแปร n } ตัวอย่าง Input Base Number : 3 Input n Number : 5 Power of 3^5:243

14 int main() { int x,n; -- ประกาศตัวแปรเป็นชนิด int 2 ตัวคือ x,n

15 cout<<"Input Base Number:"; -- แสดงค่า Input Base Number cin>>x; -- รับค่าเข้าตัวแปร x cout<<"Input n Number:"; -- แสดงค่า Input n Number

16 cin>>n; -- รับค่าเข้าตัวแปร n cout<<"Power of"<

17 รับค่า n = 5; เข้ามาเก็บไว้ใน หน่วยความจำ Memory 5 หน่วยความจำ Memory กำหนดค่าให้ตัวแปร x=2; และ n=5;

18 ฟังก์ชันรีเคอร์ซีฟ การทำงานในส่วนเรียกตัวเองให้ขึ้นมา จะมีการเรียกเพียงครั้งเดียว แต่บาง ฟังก์ชันอาจต้องมีการเรียกตัวเอง ขึ้นมาทำงานได้มากกว่าหนึ่งครั้ง การหาตัวเลขไฟโบแนคซี (Fibonacci Number) หมายถึง การนำค่าเริ่มต้น คือ 0 กับ 1 จากนั้นเลขถัดไปจะ เท่ากับเลขก่อนหน้าสองตัวบวกกัน

19 long fibonacci(int n) -- ประกาศค่า long มีชื่อว่า fibonacci ให้มีชนิดเป็น int มีตัวแปรชื่อว่า n if(n<1) if(n<1) return 0; return 0; -- โดยมีเงื่อนไขว่าถ้า n น้อยกว่า 1 ให้ แสดงค่าเป็น 0

20 if(n==1) return 1; return 1; -- ถ้า n เท่ากับ 1 ให้แสดงค่า 1 else return fibonacci(n- 1)+fibonacci(n-2); return fibonacci(n- 1)+fibonacci(n-2); -- หรือให้แสดงค่า n ลบ 1 บวกกับ n ลบ 2

21 01=112=3 ครั้งที่ 1 ครั้งที่ 2 23=5 ครั้งที่ 3 ตัวอย่าง

22 35=858=13 ครั้งที่ 4 ครั้งที่ 5 813=21 ครั้งที่ 6

23 ฟังก์ชันการหาค่าตัวเลขไฟโบแนคซี แบบวนลูป long fiboI(int n){ -- ประกาศค่า long มีชื่อว่า fiboI ให้มี ชนิดเป็น int มีตัวแปรชื่อว่า n int i,f0,f1,f2; -- ประกาศตัวแปรเป็นชนิด int 4 ตัว คือ i, f0, f1, f2

24 if(n<1) return 0; return 0; -- มีเงื่อนไขว่าถ้า n มากกว่า 1 ให้แสดง 0 if(n<3) return 1; return 1; -- แต่ถ้า n มากกว่า 3 ให้แสดง 1 f0=1; -- โดยกำหนดให้ f1 มีค่า เท่ากับ 1 f1=1 -- โดยกำหนดให้ f1 มีค่าเท่ากับ 1

25 for(i=3;i<=n;i++) { -- โดยมีเงื่อนไขว่าให้ i=3 แล้วให้ i มากกว่าหรือเท่ากับ n แล้วให้ i บวก เพิ่มขึ้น 1 f2=f1+f0; f0=f1; -- โดยกำหนดให้ f2 เท่ากับ f1 บวก f0 -- แล้วให้ f0 เท่ากับ f1

26 f1=f2; -- แล้วให้ f1 เท่ากับ f2 } return f2; -- ให้ส่งค่าและแสดงค่า f2 คือ 7 }

27 f0 =5; f1 =2; 5 f0 2 f1 f0 + f1 = f = 7 โดยให้ส่งค่าและแสดงค่า F2

28 f0 = f15 = 5 = f25 = 5 ดังนั้น f0 จะมีค่าเท่ากับ 0 และ f1 จะมีค่าเท่ากับ 5 ดังนั้น f1 จะมีค่าเท่ากับ 0 และ f2 จะมีค่าเท่ากับ 5

29 ฟังก์ชันการหาค่าตัวเลขไฟโบแนคซี แบบใช้พื้นที่เพิ่ม long fiboM(int n){ -- ประกาศค่า long มีชื่อว่า fiboM ให้มี ชนิดเป็น int มีตัวแปรชื่อว่า n int i; -- ประกาศตัวแปรเป็นชนิด int โดย กำหนดให้ชื่อ i

30 long F[100]; -- ประกาศตัวแปรเป็นชนิด long โดย กำหนดให้ชื่อ F มีการจองพื้นที่ไว้ 100 if(n<1) return 0; return 0; -- มีเงื่อนไขว่าถ้า n มากกว่า 1 ให้แสดง 0 if(n<3) return 1; return 1; -- แต่ถ้า n มากกว่า 3 ให้แสดง 1

31 F[1]=1; -- โดยกำหนดให้ F[1] เท่ากับ 1 F[2]=1; -- โดยกำหนดให้ F[2] เท่ากับ 1 for (i=3;i<=n;i++) { -- โดยเงื่อนไขว่าให้ i เท่ากับ 3 แล้วให้ i มากกว่าหรือเท่ากับ n และให้ i++

32 F[i]=F[i-1]+F[i-2]; -- โดยให้ F[i] เท่ากับ F[i-1] บวก F[i+2] return F[n]; -- ส่งค่าและแสดงค่า F[n] }}

33 F[i-1] =5; F[i-2] =2; 5 f0 2 f1 F[i-1] + F[i-2] = F[i]F[i]F[i]F[i] = 7 F[i] โดยให้ส่งค่าและแสดงค่า F[i]


ดาวน์โหลด ppt ระหว่างการออกแบบเขียน โปรแกรมแบบบนลงล่าง (Top-down Design) จะมีงานย่อย (Subtask) เพื่อ แก้ปัญหาในแต่ละเรื่อง และผู้เขียน โปรแกรมต้องการใช้งานย่อยใน ลักษณะที่เรียกตัวเองขึ้นมาทำงาน.

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


Ads by Google