حول مثال المعادلة O(k^n)
في المثال التالي، هل المقصود بالكود return fibonacci(n-1) + fibonacci(n-2)
هو جمع القيمة الموجودة في الباراميترات مثل مبدأ فايبوناتشي (Fibonacci).
أو استخدمته فقط + لكي تضيف دالة جنب دالة حتى يتم إرجاعها مرتين؟
// تعريف الدالة لا يحسب كخطوة public int fibonacci(int n) { // الشرط بحد ذاته لا يحسب خطوة if (n <= 0) { // كما قلنا سابقاً Big-O إرجاع القيمة يحسب خطوة واحدة و لكن عدد الخطوات غير مهم في تقييم الـ return 0; } // الشرط بحد ذاته لا يحسب خطوة if (n <= 2) { // كما قلنا سابقاً Big-O إرجاع القيمة يحسب خطوة واحدة و لكن عدد الخطوات غير مهم في تقييم الـ return 1; } // كخطوتين return لنفسها ) سيتم حساب أمر الـ return كل مرة سيتم فيها إعادة استدعاء الدالة لنفسها, ( أي ستفعل // n و السبب في ذلك أن كل عملية جمع سيتم إرجاعها تتطلب من الدالة أن تستدعي نفسها مرتين مضاعفة بقيمة // O(k^n) بما أن الدالة ستعيد استدعاء نفسها كل مرة بمقدار ضعفين زيادة فإنه سيتم تمثيلها بـ return fibonacci(n - 1) + fibonacci(n - 2); }