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

مساعده في سلسله Fibbianci باستخدام Recursion

بدأه سار مع الليل في 20 أكتوبر 2009 · 4 رد · 664 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم اخواني الغالين

ممكن شرح هذه الداله وهي داله fibbianci انا عارف ايه عملها وهي العدد عباره عن موجوع العددين الذي قبله

وعارف انه الداله من نوع Recursion يعني الاستدعا الذاتي

وعارف كيف يتم عمل الاستدعا الذاتي للداله وكلن هناك غموض في هذا الكود وهو طريقة عمله

وهذا الكود

  1.  
  2. nt fib(int n)
  3. {
  4. int tmp;
  5. if(n < 0)
  6. return -1;
  7.  
  8. if(n==0)
  9. return 0;
  10.  
  11. if(n==1)
  12. return 1;
  13.  
  14. return fib(n-1) + fib(n-2);// هنا الغموض ارجو توضيح هذا الغموض
  15. /*انا حسب فهمي حللته كما يلي
  16. fib(n-1) + fib(n-2)
  17. let n=10;
  18. fib(10-1)==>9 + fib(9-2)==>7 ==>9+7=16
  19. fib(7-1)===>6 + fib(6-2)==>5 ==>6+5=11
  20. fib(5-1)===>4 + fib(4-2)==>2 ==>4+2=6
  21. fib(2-1)===>1 + fib(1-2)==> if(n==1) return 1; =1
  22. انا توصلت الى هنا ولم اقدر اكمل ايه عمل الباقي ارجو التوضيح
  23. */
  24.  

انا عارف اكون داله fibbianci باستخدام حلقات التكرار ولكن لم اتمكن من تكوينها بالاستدعا الذاتي للداله Recursion

49940.jpg
#2

او انك تريد (6)fib سوف يقوم البرنامج بتالي

fib(6)=  fib(5)	 +	fib(4)
fib(6)=fib(4)+fib(3)+fib(3)+fib(2)
fib(6)=fib(3)+fib(2)+fib(2)+fib(1)+fib(2)+fib(1)+fib(1)+fib(0)
fib(6)=fib(2)+fib(1)+fib(1)+fib(0)+fib(1)+fib(0)+1+fib(1)+fib(0)+1+1+0
fib(6)=fib(1)+fib(0)+1+1+0+1+0+1+1+0+1+1+0
fib(6)=1+0+1+1+0+1+0+1+1+0+1+1
fib(6)=8

اي انه يختصر كل رقم حتى يصل الى 1 او 0 وهم فقط الذي يعرف قيمهم

تم تعديل هذه المشاركة بواسطة Ali Al-Zyoud في 22 أكتوبر 2009 في 14:32

#3

والله لم افهم اسف اسف اسف

  1.  
  2. والله لم افهم اسف اسف اسف
  3. fib (6) = 1,2 3,5,8
  4.  
  5.  

كيف تتم عمله جمع العددين الاخيرين في كل مره

تم تعديل هذه المشاركة بواسطة سار مع الليل في 23 أكتوبر 2009 في 01:11

49940.jpg
#4

يعني

(fib(6 يساوي (fib(5)+fib(4

جيد ؟؟؟

الان (fib(5 يساوي(fib(4) +fib(3

و (fib(4 يساوي (fib(3)+ fib(2

اذاً (fib(6 عباره عن (fib(4)+fib(3)+fib(3)+fib(2

وتبداء تحلل كلرقم من جديد حتى تصل الى سلسله من (fib(1 و (fib(0 فتصل الى الحل

يعني (fib(2) = fib(1) +fib(0

وكذلك (fib (3 و (fib (4 وهكذا ال ان تصل الى (fib(0 و (fib(1 والتي تعرف قيمتها

ويا اخي (fib(6 لا يساوي 11 انه يساوي 8 اي الرقمين السابقين فقط وليس جميع الارقام 5+3

#5

اخي الغالي بارك الله فيك وانت عملت معاي الى حد كبيررررررررررر شكراً لك

والظاهر اني غبي غبي غبي بصراحه هاي جننتني

واقووووووووووول لك بارك الله فيك

واسف والله لاني تعبتك معاي

واعتقد ان غيره إن شاء الله سوف يفهمها ويستفيد

49940.jpg

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