الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Recursion

بدأه ahmadarafa في 30 أغسطس 2009 · 3 رد · 534 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

فيبوناتشى 

fib(n) = fib(n-1) + fib (n-2)

وهذا هو الكود 

function fib($n)

{

 if($n <= 1)

 {

  return 1;

 }

 else

 {

 return (fib($n-1)+fib($n-2));

 }

}

السؤال 

لماذا إن طلب أن يعيد القيمه مساويه ل 2 فى الشرط يخرج الناتج مضروب *2 

أسف إن لم أستطع الشرخ سأحاول أن اوضح

هذه الداله تعيد القيمه  55 

فى حالة كان المتغير المدخل لها 9

echo fib(9);

السؤال عند تغيير 

return 1;

إلى 

return 2;

تعيد الداله 110 

لماذا ؟؟؟؟؟

أسف أن كان السؤال تافه فأنا فى البدايه شكراً

 

#2

عادي أخي لأانك لو فهمت مبدأ الفيبوناتشي والدالة التي أنجزتها ستفهم أنه عندما يبدأ العد فإنه في كل عملية سيصل لرقم

وهنا سترجع الدالة في القيمة واحد العدد 2 الذي غيرت به القيمة المسترجعة إن كان القيمة لدالة اصغر أ تساوي 1fib(2)-fib(1)

اتمنى ان تكون فهمت المقصود

#3

احببت الموضوع هذا في الجامعه...

السبب ان عند حساب fb للعدد 9 ... قمت بمناداه الداله fb للعدد 0 و 1 خمسه وخمسين مره!!! جرب الكود هذا

function fib($n)
{
 if($n <= 1)
 {
echo "fb(".$n.") has been called <br />\n";
  return 1;
 }
 else
 {
 return (fib($n-1)+fib($n-2));
 }
}

شخصيا برأيي الكود اوضح بالطريقه التاليه

function fib($n)
{
 if($n==1)return 1;
 else if($n==2) return 2;
 else return (fib($n-1)+fib($n-2));
}

تم تعديل هذه المشاركة بواسطة Ryn في 30 أغسطس 2009 في 17:59

php5-zce-logo-new.gif

CCNA, CCNA Security, CCNP

#4

شكراً لكم أستاذ rym وأستاذ aimad

شكراً لكم جزيلاً

مواضيع مشابهة