การบ้าน
1. จงเขียนโปรแกรมในการคำนวณพื้นที่ของรูปวงแหวนดังต่อไปนี้ โดยการนำ sub หรือ function มาช่วย
2. ปรับปรุงโปรแกรมต่อไปนี้ให้สั้นลงแต่ต้องทำงานได้เหมือนเดิม
Module ModuleFibo
Sub main()
Dim x As Integer = 8
Console.WriteLine("Fibo(" & x & ") = " & Fibo(x))
End Sub
Function Fibo(ByVal x As Integer) As Long
If x = 0 Then 'ตัวจบโปรแกรมข้อนี้คือ 2 ตัว ถ้าไม่มีตัวนี้
Return 0 'โปรแกรมจะวนไปเรื่อยๆ หาจุดที่จบไม่ได้
ElseIf x = 1 Then
Return 1
Else
Return Fibo(x - 1) + Fibo(x - 2)
End If
End Function
End Module
=================================เนื้อหา
- sub
- function
- Recursive Function
Factorial
5! = 5*4*3*2*1 = 120
Stack
void main()
{
System.out.println(Fac(5));
}
int Fac(int x)
{
if (x <=1)
return 1;
else
return x * Fac(x-1);
}
========================
Fibonacci
0,1,1,2,3,5,8,13,
f(0) = 0
f(1) = 1
f(n) = f(n-1) + f(n-2)
=======================================
Quiz
1. Recursive Function
รับค่า x เป็น 10 ให้โปรแกรมตอบ 55 (1-10 มาบวกกัน)
รับค่า x เป็น 5 ให้โปรแกรมตอบ 15 (1-5 มาบวกกัน)
รับค่า x เป็น n เมื่อ n คือจำนวนเต็มใดๆ ให้นำเลข 1 - n
มาบวกกัน
2. Recursive Function
รับค่า x เป็น 10 ให้โปรแกรมตอบ 100 (10 บวกกัน 10 ครั้ง)
รับค่า x เป็น 5 ให้โปรแกรมตอบ 50 (10 บวกกัน 5 ครั้ง)
รับค่า x เป็น n เมื่อ n คือจำนวนเต็มใดๆ ให้นำเลข 10
มาบวกกัน n ครั้ง
=========================
0 | 1 | 2 | ||||
0 | 1 | 2 | 3 | 00+01+02 | 6 | |
1 | 4 | 5 | 6 | 10+11+12 | 15 | |
2 | 7 | 8 | 9 | 20+21+22 | 24 | |
00+10+20 | 12 | 00+11+22 | 15 | |||
01+11+21 | 15 | 02+11+20 | 15 | |||
02+12+22 | 18 |
==================
5 | 10 | swap(x,y) | สลับค่า x และ y | |||
x | y | |||||
temp = x | นำค่า x มาใส่ใน temp | |||||
x = y | นำค่า y มาใส่ใน x | |||||
y = temp | นำค่า temp มาใส่ใน y | |||||
10 | 5 | 5 | ||||
x | y | temp |
==================
1 | ||||||
pop *2 = 1*2 = 2 | pop *3 = 2*3 = 6 | pop *4 = 6*4 = 24 | pop *5 = 24*5 = 120 | |||
* | ||||||
3 | ||||||
* | * | |||||
4 | 4 | |||||
* | * | * | ||||
5 | 5 | 5 |
===============
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | ตำแหน่ง |
0 | 1 | 1 | 2 | 3 | 5 | 8 | 13 | 21 | ค่า |
ไม่มีความคิดเห็น:
แสดงความคิดเห็น