ผลต่างระหว่างรุ่นของ "Ioi/recursion"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
แถว 1: แถว 1:
 
หน้านี้รวมแบบฝึกหัดการเขียน recursion ด้วย Racket
 
หน้านี้รวมแบบฝึกหัดการเขียน 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
  
 
== ฝึกฝน ==
 
== ฝึกฝน ==

รุ่นแก้ไขเมื่อ 22:15, 25 ตุลาคม 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

merge sort

ต้นไม้