PHP: هل يمكن للشخص أن يفسر كيف يعمل هذا الرمز؟ (فيبوناتشي)

StackOverflow https://stackoverflow.com/questions/1811368

  •  06-07-2019
  •  | 
  •  

سؤال

وأعدكم هذا ليس الواجبات المنزلية. أنا مجرد مبتدئ غريبة.

وكيف يفعل ذلك:

function f($i){return $i<2?$i:f($i-1)+f($i-2);}

و(كتبه شخص ذكي)

وتعطي نفس النتيجة مثل هذا

function fibonacci($n, $arr = array(0,1)){
    $arr[] = $arr[(count($arr) - 1)] + $arr[(count($arr) - 2)];
    if (count($arr) == $n) return $arr[$n - 1];
    else return fibonacci($n, $arr);
}

و(الألغام)

وأعتقد أنني لا تحصل بناء الجملة. هل هناك تعليمة if هناك؟

هل كانت مفيدة؟

المحلول

والمشغل "؟" يدعى المشغل الثلاثي. يتم استخدامه مثل: P1 P2: P3 تقول إذا P1 هو الصحيح، ثم p2، آخر P3

.

نصائح أخرى

وهناك تعليمة if هناك. إنه يسمى الثلاثي مشغل .

condition ? if true : if false

إذا $ ط أقل من 2 عودة $ ط، شيء آخر عودة و ($ ط-1) + و ($ ط 2). أفترض استدعاء الدالة العودية ليس ما كنت تواجه مشكلة في الفهم، ولكن إذا كان هناك من نصف طن من الأمثلة من التعليمات البرمجية فيبوناكسي العودية إذا كنت جوجل لذلك.

وظيفة الأولى هي الاختزال. وهنا ما تقوم به

if($i < 2) { // $i < 2 ?
  return $i;
}
else { // :
  return f($i-1)+f($i-2);
}

حسب إذا كان أقل من اثنين، وليس لديه وظيفة ليتم استدعاؤها. إذا كان 2 أو أكثر، يتم استدعاء الدالة بشكل متكرر.

وعلامة الاستفهام هي التعبير الشرطي:

x ? a : b

وتقييمها إلى a إذا x غير صحيح، أو b إذا كان غير صحيح.

function f($i){return $i<2?$i:f($i-1)+f($i-2);}

وسائل

function f($i)
{
    if $(i < 2)
        return $i;
    return f($i-1) + f($i-2);
}

وهذا هو التعبير المباشر عن المعادلة فيبوناتشي.

ويخلق وظيفة أخرى، ويستخدم مخبأ من النتائج التي تم إنشاؤها: هذا هو الأمثل كبيرا منذ تقييم أكذوبة (4)، على سبيل المثال ستقيم إلا أكذوبة (2) مثل 3 أو 4 مرات، وأكذوبة (1) عدد غير قليل أكثر من ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top