ما المعلمات تأخذ هذه الصيغة عندما تكون في "تتراكم"?

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

  •  21-12-2019
  •  | 
  •  

سؤال

يتم نسخ هذا الرمز من سؤال مستخدم آخر وأنا الغريب كيف تتراكم يعمل هنا.أحصل على النتيجة الصحيحة من هذا الرمز ، ولكن أود أن أعرف ما هي المعلمات لم يأخذ عندما تكون في "تتراكم".الحرف الأول باعتباره ومجموع مجموعة كما ب?الرجاء المساعدة

#include <numeric>

int gcd(int a, int b)
{
    for (;;)
    {
        if (a == 0) return b;
        b %= a;
        if (b == 0) return a;
        a %= b;
    }
}

int lcm(int a, int b)
{
    int temp = gcd(a, b);

    return temp ? (a / temp * b) : 0;
}

int main()
{
    int arr[] = { 5, 7, 9, 12 };

    int result = std::accumulate(arr, arr + 4, 1, lcm);

    std::cout << result << '\n';
}
هل كانت مفيدة؟

المحلول

الحجة الأولى التي lcm سوف تتخذ هي القيمة المتراكمة حتى الآن (الذي يبدأ في 1, ، الحجة الثالثة من std::accumulate) ، والحجة الثانية ستكون عنصرا في arr.التالي ، أيا كان lcm يتم تمرير العوائد كوسيطة الأولى والعنصر التالي في arr كما الثانية.

انظر مرجع لمزيد من التفاصيل.

يمكنك الكتابة بسهولة a و b إلى الإخراج القياسي في الداخل lcm لنرى ما يحدث.

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