Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > อยากถามเกี่ยวกับ การเขียนแบบ Recursive php



 

อยากถามเกี่ยวกับ การเขียนแบบ Recursive php

 



Topic : 096025



โพสกระทู้ ( 72 )
บทความ ( 0 )



สถานะออฟไลน์




อยากถามเกี่ยวกับการเขียน a recursive function for computing fibonacci number ที่ print ค่าจาก parameter n = ? เช่นค่า n=6 จะปรับ 1 2 5 6

ถ้าในภาษา php เราจะเขียนยังไง ครับ มีพี่ๆคนไหนพอเข้าใจบ้าง ครับ



Tag : PHP







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2013-06-03 15:09:34 By : bankNay View : 2142 Reply : 19
 

 

No. 1



โพสกระทู้ ( 464 )
บทความ ( 0 )



สถานะออฟไลน์
Twitter Facebook Hi5

ทำไม่ได้จร๊






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-03 15:31:06 By : dekkuza
 


 

No. 2



โพสกระทู้ ( 1,819 )
บทความ ( 20 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

ลองค้นหาดูสิครับ มีเยอะแยะเลย

Code (PHP)
function fib($n)
{
	if($n === 0) {
		return 0; 
	} elseif ($n === 1) {
		return 1; 
	}
	return fib($n - 1) + fib($n - 2); 
}
for($i = 0; $i < 10; $i++) { 
	echo fib($i) . '<br />'; 
}

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-03 15:32:26 By : cookiephp
 

 

No. 3



โพสกระทู้ ( 72 )
บทความ ( 0 )



สถานะออฟไลน์


ช่วยอธิบายหน่อยได้ไหม ครับ อ่านโค้ดแล้วผมไม่เข้าใจ


Recursive function เป็นรูปแบบของฟังก์ชันแบบเวียนซ้ำ

ส่วน fibonacci number คือ ลำดับเลข

คือผมไม่เข้าใจการนำโจทย์มาสร้างโปรแกรม


ที่ print ค่าจาก parameter n = ? เช่นค่า n=6 จะปรับ 1 2 5 6
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-03 16:35:23 By : bankNay
 


 

No. 4



โพสกระทู้ ( 1,819 )
บทความ ( 20 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

fibonacci number คือลำดับเลขที่ เลขปัจจุบันมีค่าเท่ากับ เลขก่อนหน้า สองตัว บวกกัน โดย เลขสองตัวแรกจะเท่ากับ 0 และ 1

สมการเขียนได้แบบนี้ Fn = Fn-1 + Fn-2

ดังนั้นสมมติเราเรียก fib(2)

สิ่งที่จะเกิดขึ้นคือ

Code
// เรียกครั้งแรก function fib(2) { if(2 === 0) { return 0; } elseif (2 === 1) { return 1; } // เรียกตัวเองสองครั้ง return fib(2 - 1) + fib(2 - 2); } function fib(1) { if(1 === 0) { return 0; } elseif (1 === 1) { // มาตรงนี้แน่นอน return 1; } return fib(1 - 1) + fib(1 - 2); } function fib(0) { if(0 === 0) { // มาตรงนี้แน่นอน return 0; } elseif (0 === 1) { return 1; } return fib(0 - 1) + fib(0 - 2); } // กลับมาที่การเรียกครั้งแรก function fib(2) { if(2 === 0) { return 0; } elseif (2 === 1) { return 1; } // ผลจากการเรียกตัวเอง return 1 + 0; }


ผลที่ได้ก็คือ 1 นั่นเอง
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-03 16:51:16 By : cookiephp
 


 

No. 5



โพสกระทู้ ( 72 )
บทความ ( 0 )



สถานะออฟไลน์


if(1 === 0) { เครื่องหมาย === 3 ตัวนี้หมายความว่าไรหรอครับ ไม่เคยเหน
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-03 17:24:46 By : bankNay
 


 

No. 6

Guest


=== ( เท่ากันทุกประการ ทั้งค่าและชนิด )
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-03 17:57:26 By : WiTT
 


 

No. 7



โพสกระทู้ ( 72 )
บทความ ( 0 )



สถานะออฟไลน์


อ่อ ขอบคุณมา ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-04 07:58:23 By : bankNay
 


 

No. 8



โพสกระทู้ ( 72 )
บทความ ( 0 )



สถานะออฟไลน์


write a recursive function for computing Fiboncci nember Print ค่า N ออกมา n = 4 >>>> 1 1 2 3
n= 6 >>>> 1 1 2 3 5 8
จงหา n : 10,20,30,40,50,60


Code (PHP)
function fib($n)
{
	if($n === 10) {
		return 0; 
	} elseif ($n === 1) {
		return 1; 
	}
	return fib($n - 1) + fib($n - 2); 
}
for($i = 0; $i < 10; $i++) { 
	echo fib($i) . '<br />'; 
}


Code (PHP)
function fib($n)
{
	if($n === 20) {
		return 0; 
	} elseif ($n === 1) {
		return 1; 
	}
	return fib($n - 1) + fib($n - 2); 
}
for($i = 0; $i < 10; $i++) { 
	echo fib($i) . '<br />'; 
}



ถูกป่าว ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-05 09:10:38 By : bankNay
 


 

No. 9



โพสกระทู้ ( 72 )
บทความ ( 0 )



สถานะออฟไลน์


ไม่มีใครทราบเลยหรา ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-06 16:37:15 By : bankNay
 


 

No. 10



โพสกระทู้ ( 2,258 )
บทความ ( 5 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook Hi5 Blogger

ไปแก้ function ทำไมอะครับสามารถเรียกใช้งาน function ได้เลยครับ

Code (PHP)
$arr=array("10","20","30","40","50","60");
foreach($arr as $val){
  echo fib($val)."</br>";
}

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-06 16:48:02 By : Manussawin
 


 

No. 11



โพสกระทู้ ( 72 )
บทความ ( 0 )



สถานะออฟไลน์


Code (PHP)
function fib($n)
{
	if($n === 0) {
		return 0; 
	} elseif ($n === 1) {
		return 1; 
	}
	return fib($n - 1) + fib($n - 2); 


$arr=array("10","20","30","40","50","60");
foreach($arr as $val){
  echo fib($val)."</br>";
}



แบบนี้ รันไม่ออก
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-07 13:45:58 By : bankNay
 


 

No. 12



โพสกระทู้ ( 1,994 )
บทความ ( 10 )



สถานะออฟไลน์
Facebook Blogger

ในฟังก์ชั่น fib
ลองเพิ่ม $n = (int)$n; ก่อนเปรียบเทียบค่าดูครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-07 14:09:13 By : {Cyberman}
 


 

No. 13



โพสกระทู้ ( 1,819 )
บทความ ( 20 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

ไม่ต้องไปครอบตัวเลขให้เป็นสตริงครับ
"10","20" เนี่ยไม่ต้อง
หรือจะเพิ่มแบบที่คุณ Cyberman บอกก็ได้

Code (PHP)
function fib($n)
{
	$n = (int)$n;
	if($n === 0) {
		return 0; 
	} elseif ($n === 1) {
		return 1; 
	}
	return fib($n - 1) + fib($n - 2); 


$arr=array(10,20,30,40,50,60);
foreach($arr as $val){
  echo fib($val)."<br />";
}


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-07 14:11:30 By : cookiephp
 


 

No. 14



โพสกระทู้ ( 72 )
บทความ ( 0 )



สถานะออฟไลน์


งง ครับ ผมเพิ่งหัดเรียน ยัง งง ครับ - -
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-07 14:41:10 By : bankNay
 


 

No. 15



โพสกระทู้ ( 72 )
บทความ ( 0 )



สถานะออฟไลน์


Code (PHP)
function fib $n =(10)$n;
{
	if($n === 0) {
		return 0; 
	} elseif ($n === 1) {
		return 1; 
	}
	return fib($n - 1) + fib($n - 2); 
}
for($i = 0; $i < 10; $i++) { 
	echo fib($i) . '<br />'; 
}
?>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-07 14:41:22 By : bankNay
 


 

No. 16



โพสกระทู้ ( 1,819 )
บทความ ( 20 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

คือ น้องครอบตัวเลข เช่น จาก 20 ให้เป็น "20" ดังนั้น "ชนิด" ของมันจะเป็น "สตริง" ไม่ใช่ "ตัวเลข"
ดังนั้นเมื่อตรวจสอบด้วย === มันจะให้ผลเป็น false เสมอ เก็ตมั้ยครับ
เพราะ === มันตรวจสอบ "ชนิดของข้อมูล" ด้วย ว่าตรงกันหรือไม่

function fib($n)
{
	// ที่มันไม่ออกในตอนแรก เพราะน้องครอบตัวเลขด้วย " $n
	// ที่ส่งมาจึงมีชนิดเป็น "สตริง"
	// เพราะ $n เทียบกับ 0 ด้วย === (สตริง === ตัวเลข) จึงไม่มีทางเป็นจริง
	if($n === 0) {
		return 0; 
	} elseif ($n === 1) { // อันนี้ก็จะไม่มีทางเป็นจริง
		return 1; 
	}
	// และจะมาตรงนี้เสมอ ทำให้การคำนวณผิดพลาด
	return fib($n - 1) + fib($n - 2); 
}


แก้ด้วยการ cast
function fib($n)
{
	// วิธีแก้คือ แปลงค่าที่รับมาให้เป็นตัวเลขก่อน ด้วยการ cast
	// คราวนี้แม้จะส่งมาเป็นสตริง หากเป็นสตริงที่แปลงเป็นตัวเลขได้ ก็จะถูกแปลงเป็นชนิดตัวเลข
	$n = (int)$n;
	if($n === 0) {
		return 0; 
	} elseif ($n === 1) {
		return 1; 
	}
	return fib($n - 1) + fib($n - 2); 
}



ประวัติการแก้ไข
2013-06-07 14:54:16
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-07 14:53:51 By : cookiephp
 


 

No. 17



โพสกระทู้ ( 114 )
บทความ ( 0 )



สถานะออฟไลน์


ผมขอบคุณ คุณแมวของคุกกี้ จริงๆครับ ผมเขียนโปรแกรมมาได้ซักพัก แต่ไม่เคยเข้าใจหลักการทำงาน การเขียนแบบ Recursive เลย


จนได้มาอ่านกระทู้นี้้ แล้วลองนั่งคิดมือดู จนเข้าใจหลักการทำงาน ขอบคุณมากๆ ครับ



แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-07 16:06:41 By : tongjaab
 


 

No. 18



โพสกระทู้ ( 1,819 )
บทความ ( 20 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 17 เขียนโดย : tongjaab เมื่อวันที่ 2013-06-07 16:06:41
รายละเอียดของการตอบ ::

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-07 16:14:17 By : cookiephp
 


 

No. 19



โพสกระทู้ ( 72 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณมากครับ อิอิ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-07 17:42:32 By : bankNay
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : อยากถามเกี่ยวกับ การเขียนแบบ Recursive php
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 01
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่