با سلام لطفا مرا در حل این الگوریتم کمک کنید :
الگوریتمی بنویسید که مقدار عبارت زیر را محاسبه و چاپ نماید .
s=1+2+3+.....+n
با سلام لطفا مرا در حل این الگوریتم کمک کنید :
الگوریتمی بنویسید که مقدار عبارت زیر را محاسبه و چاپ نماید .
s=1+2+3+.....+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
از راهنمایی شما بسیار ممنونم
سلام ، یا از روش زیر :
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
موفق و پیروز باشید !!!
سلام میتونی از کد بازگشتی زیر استفاده کنی
if n=1 then return 1
else
return sum(n)=n+sum(n-1);
آخرین ویرایش به وسیله whitehat : شنبه 13 مهر 1387 در 12:34 عصر دلیل: برای خوانایی بیشتر از تگ کد استفاده کنید
سلام دوستان من یه سوال دارم در مورد مساله جمع اعداد یک تا 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) است که از روش اول بسیار بهینه تر است.