العرض التوضيحي هنا عبارة عن خوارزمية تراكمية، مثل 1,2,3,4...n
أي: المجموع = 1+2+3+4...+n;
يمكننا أن نفعل هذا:
for (long i = 1,v = value; i <= v; i++) {
مجموع += أنا؛
}
مبلغ الإرجاع؛
}
/**
* تنفيذ خوارزمية التراكم<br>
*
*@التاريخ 16-4-2013
* @ المؤلف هونغتن
*
*/
الطبقة العامة AddArithmetic {
/**
* حلقة لتنفيذ طريقة التراكم
*قيمةparam
* @يعود
*/
دورة طويلة ثابتة خاصة (قيمة طويلة) {
مجموع طويل = 0؛
for (long i = 1,v = value; i <= v; i++) {
مجموع += أنا؛
}
مبلغ الإرجاع؛
}
/**
* الطريقة الغوسية:<code>(n+1)*n/2</code><br>
* يمكنك قراءة المزيد من <a href="http://zhidao.baidu.com/question/411055258.html">هنا</a>
*قيمةparam
* @يعود
*/
غاوسي طويل ثابت خاص (قيمة طويلة) {
مجموع طويل = 0؛
المجموع = (القيمة + 1) * القيمة / 2؛
مبلغ الإرجاع؛
}
public static void main(String[] args) {
// قم بتنظيف الذاكرة ولكن قد لا يتم تنفيذها.
System.gc();
// يجب عليك تغيير القيمة، ثم الحصول على نتائج مختلفة
القيمة الطويلة = 10000000؛
مجموع طويل = 0؛
بداية طويلة = System.currentTimeMillis();
مجموع = دورة(قيمة);
long end = System.currentTimeMillis();
System.out.println("استخدم طريقة تراكم الحلقات للتراكم من [1] إلى ["+value+"]، الوقت المستغرق: ["+(end - start) + "]ms، result: "+ sum);
// قم بتنظيف الذاكرة ولكن قد لا يتم تنفيذها.
System.gc();
ابدأ = System.currentTimeMillis();
المبلغ = جاوسي(القيمة);
النهاية = System.currentTimeMillis();
System.out.println("استخدم طريقة Gaussian للتراكم من [1] إلى ["+value+"]، الوقت المستغرق: ["+(end - start) + "]ms، result: "+ sum);
}
}
وبطبيعة الحال، تختلف نتائج تشغيل الأجهزة ذات التكوينات المختلفة...
حالة تشغيل الجهاز الخاص بي: