สอบถามเกี่ยวกับ PHP หน่อยครับ

เริ่มโดย newlife, 14 มีนาคม 2009, 16:25:47

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

newlife

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

echo MyTest(5);


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

pjgunner

Fibonacial มั้ง

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

5*4*3*2*1

:)
[direct=http://www.pjgunner.com]โปรเจคกันเนอร์ รับทำโปรเจค เว็บไซต์[/direct]
I miss u๊.

newlife

อ้างถึงจาก: pjgunner ใน 14 มีนาคม 2009, 16:30:17
Fibonacial มั้ง

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

5*4*3*2*1

:)
ผมก็ยังไม่เข้าใจอยู่ดีครับอธิบายให้ลึกกว่านี้หน่อยได้ไหมครับ :-[
 *Image Removed*

kero

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 ดูครับ เยอะ 
[direct=http://www.my-astore.com/]Amazon Review Blog[/direct] ไม่เคยได้เงินกะเขาเล้ย เฮ้อ
[direct=http://www.kero.me/]Blog คนบ้า[/direct] 555 Blog ผมเองครับเอาไว้นั่งบ่น

newlife

อ้างถึงจาก: kero ใน 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 ดูครับ เยอะ 
งงหนักเลย :-X :-X :-X
 *Image Removed*

Red777

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
[direct=http://richparadise.net]Forex Paradise[/direct]
[direct=http://richparadise.net]ฟอเร็กซ์ พาราไดส์[/direct]
[direct=http://forexparadisethailand.blogspot.com/]Forex Paradise[/direct]
[direct=http://richparadise.net]Forex Paradise Thailand[/direct]
[direct=https://www.facebook.com/groups/965285316880180/]FB Group พูดคุยเกี่ยวกับ ForexParadise.biz[/direct]

newlife

อ้างถึงจาก: Red777 ใน 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
พอเห็นภาพแต่ก็ยังไม่เข้าใจอยู่ดีครับ :'(
 *Image Removed*

kero

อ้างถึงจาก: newlife ใน 14 มีนาคม 2009, 17:21:27
อ้างถึงจาก: kero ใน 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 ดูครับ เยอะ 
งงหนักเลย :-X :-X :-X

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

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

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

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) เนี่ย


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


[direct=http://www.my-astore.com/]Amazon Review Blog[/direct] ไม่เคยได้เงินกะเขาเล้ย เฮ้อ
[direct=http://www.kero.me/]Blog คนบ้า[/direct] 555 Blog ผมเองครับเอาไว้นั่งบ่น

newlife

 *Image Removed*

EMINEM


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

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