ผลต่างระหว่างรุ่นของ "Ioi/recursion"
Jittat (คุย | มีส่วนร่วม) (→ฝึกฝน) |
Jittat (คุย | มีส่วนร่วม) |
||
แถว 1: | แถว 1: | ||
หน้านี้รวมแบบฝึกหัดการเขียน recursion ด้วย Racket | หน้านี้รวมแบบฝึกหัดการเขียน recursion ด้วย Racket | ||
+ | |||
+ | * [http://theory.cpe.ku.ac.th/wiki/images/01204435-lect02-scheme.pdf เอกสาร lisp/scheme/racket] | ||
== เริ่มต้น == | == เริ่มต้น == |
รุ่นแก้ไขเมื่อ 03:53, 26 ตุลาคม 2558
หน้านี้รวมแบบฝึกหัดการเขียน recursion ด้วย Racket
เนื้อหา
เริ่มต้น
1. myprod (หาผลคูณ, คืน 1 ถ้าเป็นรายการว่าง)
> (myprod '()) 1 > (myprod '(1 2 3 4 5)) 120
2. unitlist
เขียนฟังก์ชัน unitlist รับรายการ lst ทีคืนค่า #t ถ้า lst เป็นรายการความยาว 1 (ไม่ต้องสนใจกรณีที่เป็นรายการว่าง)
> (unitlist '(1)) #t > (unitlist '(1 2 3)) #f
3. mymin
> (mymin '(1 2 3 -1 100)) -1
ฝึกฝน
1. mypushback
เขียนฟังก์ชัน mypushback รับ list และ element แล้ว return list ที่มี element ต่อท้าย
> (mypushback '(1 2 3 4) 10) '(1 2 3 4 10)
ฟังก์ชันที่เขียนทำงานในเวลาเท่าใด ถ้าลิสต์ที่ได้รับมีความยาว n
2. mylast
เขียนฟังก์ชัน mylast รับ list และคืนข้อมูลสุดท้ายใน list ไม่ต้องพิจารณากรณีที่ได้รับ list ว่าง
> (mylast '(10 20 30)) 30
3. myappend
เขียนฟังก์ชันรับ list สอง list และคืน list ที่เกิดจากการต่อกันของทั้งสอง list
> (myappend '(1 2 3) '(20 30 40)) '(1 2 3 20 30 40)
ท้าทาย
1. myrev
เขียนฟังก์ชัน myrev ที่รับรายการแล้วคืนรายการที่กลับหน้าหลัง
> (myrev '(1 3 4 5 6 7 8)) '(8 7 6 5 4 3 1)
สามารถเขียนฟังก์ชันอื่นประกอบได้ เวลาในการทำงานของฟังก์ชันที่เขียนเป็นเท่าใด ถ้ารายการมีความยาว n