ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingสอบถามเกี่ยวกับ PHP หน่อยครับ
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: สอบถามเกี่ยวกับ PHP หน่อยครับ  (อ่าน 836 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
newlife
ก๊วนเสียว
*

พลังน้ำใจ: 5
ออฟไลน์ ออฟไลน์

กระทู้: 233



ดูรายละเอียด
« เมื่อ: 14 มีนาคม 2009, 16:25:47 »

โค๊ด:
function MyTest($num)	{
if($num == 1) return 1;
return $num * MyTest($num - 1);
}

echo MyTest(5);

ผลลัพธ์คือ 120
ผมอยากทราบว่ามันมีขั้นตอนการทำงานยังไงถึงได้ 120 อ่ะครับผมงง Kiss
บันทึกการเข้า

 *Image Removed*
pjgunner
คนรักเสียว
*

พลังน้ำใจ: 6
ออฟไลน์ ออฟไลน์

กระทู้: 106



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 14 มีนาคม 2009, 16:30:17 »

Fibonacial มั้ง

ใช้การเรียกตัวเอง

5*4*3*2*1

 Smiley
บันทึกการเข้า

newlife
ก๊วนเสียว
*

พลังน้ำใจ: 5
ออฟไลน์ ออฟไลน์

กระทู้: 233



ดูรายละเอียด
« ตอบ #2 เมื่อ: 14 มีนาคม 2009, 16:36:02 »

Fibonacial มั้ง

ใช้การเรียกตัวเอง

5*4*3*2*1

 Smiley
ผมก็ยังไม่เข้าใจอยู่ดีครับอธิบายให้ลึกกว่านี้หน่อยได้ไหมครับ Embarrassed
บันทึกการเข้า

 *Image Removed*
kero
ก๊วนเสียว
*

พลังน้ำใจ: 6
ออฟไลน์ ออฟไลน์

กระทู้: 326



ดูรายละเอียด
« ตอบ #3 เมื่อ: 14 มีนาคม 2009, 17:04:33 »

Recursive Function 

function เรียกตัวเอง

MyTest(5); พอเข้า function ไป ก็วิ่งไป return 5 * MyTest(4) -> 3 2 1

มันก็เป็น (((1*2 = 2 )*3=6)*4=24)*5 ก็จะ return 120 มา

เออ อธิบายเองงงเอง ลอง search google เรื่อง Recursive Function php ดูครับ เยอะ 
บันทึกการเข้า

Amazon Review Blog ไม่เคยได้เงินกะเขาเล้ย เฮ้อ
Blog คนบ้า 555 Blog ผมเองครับเอาไว้นั่งบ่น
newlife
ก๊วนเสียว
*

พลังน้ำใจ: 5
ออฟไลน์ ออฟไลน์

กระทู้: 233



ดูรายละเอียด
« ตอบ #4 เมื่อ: 14 มีนาคม 2009, 17:21:27 »

Recursive Function 

function เรียกตัวเอง

MyTest(5); พอเข้า function ไป ก็วิ่งไป return 5 * MyTest(4) -> 3 2 1

มันก็เป็น (((1*2 = 2 )*3=6)*4=24)*5 ก็จะ return 120 มา

เออ อธิบายเองงงเอง ลอง search google เรื่อง Recursive Function php ดูครับ เยอะ 
งงหนักเลย Lips Sealed Lips Sealed Lips Sealed
บันทึกการเข้า

 *Image Removed*
Red777
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 39
ออฟไลน์ ออฟไลน์

กระทู้: 1,636



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 14 มีนาคม 2009, 17:36:41 »

MyTest(5) = 5*MyTest(4) = 5*4*MyTest(3) = 5*4*3*MyTest(2) = 5*4*3*2MyTest(1) = 5*4*3*2*1 = 120
บันทึกการเข้า

newlife
ก๊วนเสียว
*

พลังน้ำใจ: 5
ออฟไลน์ ออฟไลน์

กระทู้: 233



ดูรายละเอียด
« ตอบ #6 เมื่อ: 14 มีนาคม 2009, 17:47:43 »

MyTest(5) = 5*MyTest(4) = 5*4*MyTest(3) = 5*4*3*MyTest(2) = 5*4*3*2MyTest(1) = 5*4*3*2*1 = 120
พอเห็นภาพแต่ก็ยังไม่เข้าใจอยู่ดีครับ Cry
บันทึกการเข้า

 *Image Removed*
kero
ก๊วนเสียว
*

พลังน้ำใจ: 6
ออฟไลน์ ออฟไลน์

กระทู้: 326



ดูรายละเอียด
« ตอบ #7 เมื่อ: 14 มีนาคม 2009, 18:17:03 »

Recursive Function 

function เรียกตัวเอง

MyTest(5); พอเข้า function ไป ก็วิ่งไป return 5 * MyTest(4) -> 3 2 1

มันก็เป็น (((1*2 = 2 )*3=6)*4=24)*5 ก็จะ return 120 มา

เออ อธิบายเองงงเอง ลอง search google เรื่อง Recursive Function php ดูครับ เยอะ 
งงหนักเลย Lips Sealed Lips Sealed Lips Sealed

ผมก็ว่างั้น งงกว่าเดิม ตอนเรียนผมก็งงเหมือนกัน เรียนในห้องเรียน อาจารย์สอนเรื่องนี้เรื่องเดียว ทั้งชั่วโมงเลยนะ มันคงไม่ง่ายมั้งถ้าจะ ตอบไม่กี่คำอ่ะ

recursive function ( ฟังชั่นแบบเรียกตัวเอง )
ชื่อก็บอกอยู่แล้วว่าเรียกตัวเอง อย่าง

 function a($x) {
  return a($x);
 }
ตอนเราเรียก a(5); มันก็จะทำงานไปแล้วก็ไปเจอ a(5); อีกก็จะเรียกอีกไป เรื่อยๆ ติดลูปเลยตู ออกไม่ได้  Grin ขำซะงั้น
ถ้าเคยเรียนความน่าจะเป็นมา จะรู้จัก factorial (!) ก็คือ n! = n x (n-1) x ... x 1 อย่าง 5! = 5 x 4 x 3 x 2 x1
ทำไมยกตัวอย่าง factorial เพราะ พอเจอเนื้อหาเกี่ยวกับ recursive function แทบทุกภาษาจะยกตัวอย่างเป็น หาค่า factorial นี่ล่ะ พอๆ กับ Hello World เลย  Tongue

function MyTest($num)   {
   if($num == 1) return 1;
   return $num * MyTest($num - 1);
}

echo MyTest(5);

ตอนแรกพอเราเรียก MyTest(5); ก้จะไปทำงาน MyTest(5) ก็
ทำไปถึง
   return 5 * MyTest(5-1)
มันจะยังไม่ return ก็ต้องไปทำงาน MyTest(4) ต่อ
ก็จะไปเจอ
   return 4 * MyTest(3)   //MyTest(4)
   return 3 * MyTest(2)    //MyTest(3)
   return 2 * MyTest(1)    //MyTest(2)
พอมาถึง MyTest(1) ทำงานก็จะ return 1; ออกมา คราวนี้ไม่มีเรียกต่อแล้ว ก็ส่งค่ากลับ
  MyTest(2) ก็ return 2*1 , 
  MyTest(3) ก็ return 3*2 , 
  MyTest(4) ก็ return 4*6 , 
  MyTest(5) ก็ return 5*24 , return 120 ออกไป สำหรับ function MyTest(5) เนี่ย


ขออภัย อธิบายตามความเข้าใจอ่ะ  Tongue 


บันทึกการเข้า

Amazon Review Blog ไม่เคยได้เงินกะเขาเล้ย เฮ้อ
Blog คนบ้า 555 Blog ผมเองครับเอาไว้นั่งบ่น
newlife
ก๊วนเสียว
*

พลังน้ำใจ: 5
ออฟไลน์ ออฟไลน์

กระทู้: 233



ดูรายละเอียด
« ตอบ #8 เมื่อ: 14 มีนาคม 2009, 18:21:18 »

ขอบคุณครับจัดไป +1
บันทึกการเข้า

 *Image Removed*
EMINEM
คนรักเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 106



ดูรายละเอียด เว็บไซต์
« ตอบ #9 เมื่อ: 14 มีนาคม 2009, 22:06:08 »


ได้ ความรู้เพี่มอีกครับ ขอบใจครับ

บันทึกการเข้า

ไม่มีอาชีพไหนที่ต่ำต้อย มีเพียงทัศนคติเท่านั้นที่ต้อยต่ำ
เจอคนเก่งจงเรียนรู้จากพวกเขา
เจอคนงี่เง่าให้เอามาสอนตัวเอง
หน้า: [1]   ขึ้นบน
พิมพ์