نمایش نتایج 1 تا 7 از 7

نام تاپیک: الگوریتم جمع اعداد 1 تا n

  1. #1

    Question الگوریتم جمع اعداد 1 تا n


    با سلام لطفا مرا در حل این الگوریتم کمک کنید :
    الگوریتمی بنویسید که مقدار عبارت زیر را محاسبه و چاپ نماید .
    s=1+2+3+.....+n

  2. #2
    مدیر بخش آواتار whitehat
    تاریخ عضویت
    مهر 1382
    محل زندگی
    شیراز
    پست
    2,176

    نقل قول: الگوریتم جمع اعداد 1 تا n

    برای محاسبه این دنباله از فرمول زیر استفاده کنید

    n(n+1)/2
    To follow the path:
    Look to the master
    Follow the master
    Walk with the master
    See through the master
    Become the master

  3. #3

    نقل قول: الگوریتم جمع اعداد 1 تا n

    از راهنمایی شما بسیار ممنونم

  4. #4

    نقل قول: الگوریتم جمع اعداد 1 تا n

    سلام ، یا از روش زیر :

    int sum=0;
    for(int i=1;i<=n;i++)
    sum+=i;
    cout<<sum;


    ========================

    در حالت کلی میتونی نکات زیر رو داشته باشی :

    1+2+3+...+n = n*(n+1)/2
    ---------------------------
    1^2+2^2+3^2 +... n^2 = n*(n+1)(2n+1)/6
    1^3+2^3+3^3+ ... + n^3 = (n*(n+1)/2)^2
    1^4+2^4+3^4 + ... + n^4 = n*(n+1)(6n^3+9n^2+n-1)/30


    موفق و پیروز باشید !!!

  5. #5

    نقل قول: الگوریتم جمع اعداد 1 تا n

    سلام میتونی از کد بازگشتی زیر استفاده کنی

    if n=1 then return 1
    else
    return sum(n)=n+sum(n-1);
    آخرین ویرایش به وسیله whitehat : شنبه 13 مهر 1387 در 13:34 عصر دلیل: برای خوانایی بیشتر از تگ کد استفاده کنید

  6. #6

    نقل قول: الگوریتم جمع اعداد 1 تا n

    سلام دوستان من یه سوال دارم در مورد مساله جمع اعداد یک تا n
    همونطور که می دونین دو تا راه حل وجود داره یکی با استفاده از حلقه و دیگری با استفاده از n(n+1)/2
    سوالی که من دارم اینه که با توجه به اینکه روش اول دارای پیچیدگی محاسباتی (
    O(n و روش دوم دارای (1)O است این جمله یعنی چی؟
    there is a value of n at wich the closed form is guaranteed to overtake the loop

    ممنون

  7. #7

    نقل قول: الگوریتم جمع اعداد 1 تا n

    نقل قول نوشته شده توسط negar.v مشاهده تاپیک
    سلام دوستان من یه سوال دارم در مورد مساله جمع اعداد یک تا n


    همونطور که می دونین دو تا راه حل وجود داره یکی با استفاده از حلقه و دیگری با استفاده از n(n+1)/2
    سوالی که من دارم اینه که با توجه به اینکه روش اول دارای پیچیدگی محاسباتی (
    O(n و روش دوم دارای (1)O است این جمله یعنی چی؟
    there is a value of n at wich the closed form is guaranteed to overtake the loop

    ممنون


    در روش اول، دستور جمع اعداد باید به تعداد اعداد انجام بشه مثلا فرض کن n = 10 باشه و از عدد 1 تا 10 رو باید با هم جمع کنیم اول باید 1+2 اجرا بشه بعد نتیجش با 3 جمع باشه دوباره نتیجش با 4 جمع بشه ... و در نهایت نتیجه ی بدست اومده از جمع های قبلی با 10 جمع بشه، اینطوری 10 بار دستور جمع اجرا شده یعنی به تعداد اعداد که 10 تا است دستور اصلی که جمع است اجرا شده بنابراین داریم o(10) امکان داره که تعداد اعداد متغیر باشه مثلا باشه 12 - 10000 - 2000000000000 و ... ما برای اینکه الگوریتمی بنویسیم که مفید باشه نمیام یه الگوریتم بنویسیم که فقط 10 تا مقدار رو با هم جمع کنه و اگوریتمی مینویسیم که بتونه مقادیر متغیری رو با هم جمع کنه و مقادیر رو n در نظر میگیرم که هر تعدادی میتونه باشه و چون به تعداد n بار باید عمل جمع رو انجام بدیم میگیم بیشترین و کمترین مرتبه زمانی O(n) هستش.
    اما در روش دوم با استفاده از فرمول n(n + 1) / 2 و تنها با یه محاسبه ریاضی به نتیجه میرسیم و فرمول ریاضی n ( n + 1) / 2 که دستور اصلی هستش تنها و تنها یکبار اجرا میشه بنابراین مرتبه زمانی O(1) است که از روش اول بسیار بهینه تر است.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •