اذهب إلى المحتوى
  • 0

كيفية حساب قيمة فيبوناتشي لعدد ما بالدوال العودية recursion

Khaled Elsayed4

السؤال

Recommended Posts

  • 0

الدالة العودية هي التي تقوم باستدعاء نفسها مرة أو أكثر لحساب حالات مختلفة حسب المشكلة

و فيبوناتشي، كل مرحلة هي مجموع مرحلتين السابقتين لها Fn = Fn-1 + Fn-2.

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

أي استدعائها العرمي بهذه الطريقة:

                          fib(5)   
                     /                \
               fib(4)                fib(3)   
             /        \              /       \ 
         fib(3)      fib(2)         fib(2)   fib(1)
        /    \       /    \        /      \
  fib(2)   fib(1)  fib(1) fib(0) fib(1) fib(0)
  /     \
fib(1) fib(0)

ولها شرط توقف أي قيمتين ثابتتين F0 = 0 and F1 = 1.

#include<bits/stdc++.h>
using namespace std;
// الدالة العودية تعيد قيمة نوع رقم صحيح
// تستقبل الدالة تسلسل فيبوناتشي الذي نريد الحساب عنده
int fib(int n)
{
    if (n <= 1) // شرط توقف 0 - 1 - سالب
        return n; // نعيد نفس القيمة
  // نحسب الخطوتين السابقتين للخطوة الحالية
    return fib(n-1) + fib(n-2);
}
 
int main ()
{
    int n = 9;
  // cin >> n;  // إدخال من مستخدم
  
  // حساب
    cout << fib(n);
    return 0;
}

للاطلاع

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...