:متفکر:
با سلام لطفا مرا در حل این الگوریتم کمک کنید :
الگوریتمی بنویسید که مقدار عبارت زیر را محاسبه و چاپ نماید .
s=1+2+3+.....+n:اشتباه:
Printable View
:متفکر:
با سلام لطفا مرا در حل این الگوریتم کمک کنید :
الگوریتمی بنویسید که مقدار عبارت زیر را محاسبه و چاپ نماید .
s=1+2+3+.....+n:اشتباه:
برای محاسبه این دنباله از فرمول زیر استفاده کنید
n(n+1)/2
از راهنمایی شما بسیار ممنونم
سلام ، یا از روش زیر :
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);
سلام دوستان من یه سوال دارم در مورد مساله جمع اعداد یک تا 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) است که از روش اول بسیار بهینه تر است.