ما المعلمات تأخذ هذه الصيغة عندما تكون في "تتراكم"?
-
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
لنرى ما يحدث.
لا تنتمي إلى StackOverflow