چطوری تشخیص بدم دو حلقه تو در تو به هم وابستن یا نه؟ - نسخهی قابل چاپ |
چطوری تشخیص بدم دو حلقه تو در تو به هم وابستن یا نه؟ - ania_13 - 12 آبان ۱۳۹۱ ۱۲:۰۹ ق.ظ
سلام چطوری تشخیص بدم دو حلقه تو در تو به هم وابستن یا نه؟ ممنون میشم با حوصله واسم توضیح بدین |
چطوری تشخیص بدم دو حلقه تو در تو به هم وابستن یا نه؟ - SHF - 12 آبان ۱۳۹۱ ۱۲:۵۶ ق.ظ
سلام وقتی در قسمت شرط حلقه داخلی مقدار اندیس حلقه داخلی با توجه به اندیس حلقه بیرونی شرطش قید شود |
چطوری تشخیص بدم دو حلقه تو در تو به هم وابستن یا نه؟ - esi - 12 آبان ۱۳۹۱ ۰۱:۳۹ ق.ظ
دقیقا درسته یعنی حلقه داخلی از اندیس حلقه بالاترش جهت حرکت اندیس یا شروع اندیس یا پایان اندیس استفاده کنه. مثلا حلقه اول(بیرونی ترین حلقه) شمارندش i باشه و حلقع دوم به این صورت ها باشه: for j=i to n for j=1 to i for j=1 to i; j=j+1 و حالات دیگه از ترکیب این حالت ها. در کل یا شروع شمارنده حلقه ، یا گام شمارنده یا پایان شماره داخلی تابعی از شمارنده (های) خارجی باشه. |
چطوری تشخیص بدم دو حلقه تو در تو به هم وابستن یا نه؟ - ania_13 - 12 آبان ۱۳۹۱ ۱۰:۵۶ ق.ظ
ببینید یه سئوال هست که به این صورته for(i=1,i=n,i++)a for(j=1,j=n,j++)aبعد گفته این دو حلقه وابسته نیستن ! حالا طبق نکته اولی که شما گفتین باید وابسته باشن! همین ها منو گیج کرده میشه توضیح بیشتری بدین؟ این دوتاa رو آخر حلقه ها گذاشتم که متن به هم نریزه جزو مثال نیست |
چطوری تشخیص بدم دو حلقه تو در تو به هم وابستن یا نه؟ - masoud.bala - 12 آبان ۱۳۹۱ ۱۱:۰۰ ق.ظ
مهندس سلام اینها وابسته نیستند دیگه جون در حلقه دوم که نیاز به حلقه اول نبوده خوب نگاه کن اولی i هستش دیدی ؟ که ای آقای i تا مساوی n که یک عدد می ره ولی در دومی خوب نگاه کن تو شرطی که داده آیا از i برابر j با چیز دیگری اسم برده ؟ نه دیگه نیست فقط تا n گفته n هم یک عدد سراسری هست اصلا وابستگی ندارند اگر j صدا کرده بود i رو اونوقت وابسته بودند فهمیذی مهندس ؟ |
چطوری تشخیص بدم دو حلقه تو در تو به هم وابستن یا نه؟ - esi - 12 آبان ۱۳۹۱ ۱۲:۱۰ ب.ظ
حلقه دوم که ربطی به حلقه اول نداره !!!! مرتبه اجراییش میشه O(n^2)a میشه (a برای بهم نخوردن متن). البته شرط حلقه i<=n . j<=n هستش دیگه درسته !!! تو حلقه دوم یعنی شمارنده j که از شمارنده i استفاده نکرده که وابسته بشن !! |
RE: چطوری تشخیص بدم دو حلقه تو در تو به هم وابستن یا نه؟ - azad_ahmadi - 12 آبان ۱۳۹۱ ۰۲:۱۴ ب.ظ
(۱۲ آبان ۱۳۹۱ ۱۰:۵۶ ق.ظ)ania_13 نوشته شده توسط: ببینید یه سئوال هست که به این صورته ضمن تصدیق حرفهای همه دوستان و همچنین کامنت اخری (جناب esi) ، این حلقه ای که شما نوشتین در صورتی اجرا میشه که n=1 باشه، و در این صورت فقط حلقه یک بار اجرا میشه. چون شرط حلقه = قرار داده شده پس فقط همون بار اول اجرا میشه( توجه کن که بار بعدی با توجه به گام حرکت، i یا j برابر با ۲ میشن و دیگه شرط درست نخواهد بود). همون طور که دوستان گفتن،(درست تر اینه که از > یا => استفاده بشه). در صورتی که از متغیر های یکسان در مقدار اولیه، یا شرط حلقه ، یا گام حرکت استفاده شد، حلقه ها به هم وابسته خواهند بود. موفق باشی. |
چطوری تشخیص بدم دو حلقه تو در تو به هم وابستن یا نه؟ - ania_13 - 12 آبان ۱۳۹۱ ۰۵:۰۶ ب.ظ
مرسی از لطف همه شما عزیزان من مطلبو گرفتم. اما اجازه بدین یه مثال دیگه بگم: k:=0 for i:=1 to n do begin for j:=1 to m do begin k:=k+1 j:=1 while j<n do begin k:=k+1 j:=j*2 end end جواب شده n(m+logn)a a برای به هم نخوردن متن خوب تحلیلتونو میگید؟ و اینکه آیا این do و begin تاثیری دارن توی وابستگی حلقه ها؟ |
چطوری تشخیص بدم دو حلقه تو در تو به هم وابستن یا نه؟ - masoud.bala - 12 آبان ۱۳۹۱ ۱۱:۲۳ ب.ظ
مهندس سلام الان من منظورتو از وابستگی نمی فهمم توی هیچ کدام از حلقه هات وابستگی نداری حلقه اول m بار حلقه دوم n بار و آخری چون در while عمل ضرب شده می شه log چیزی هست باز هم شاید دوستان بهتر از من واست تریس کنن |
چطوری تشخیص بدم دو حلقه تو در تو به هم وابستن یا نه؟ - ania_13 - 13 آبان ۱۳۹۱ ۱۰:۰۸ ب.ظ
سلام منم همین جاها گیر میکنم دیگه مهندس! |
چطوری تشخیص بدم دو حلقه تو در تو به هم وابستن یا نه؟ - masoud.bala - 14 آبان ۱۳۹۱ ۱۲:۱۰ ق.ظ
ببین نمی دونم واسه من خیلی سخته بخوام پشت نت واست تریس کنم ولی باید یکمی خودت کار کنی |
RE: چطوری تشخیص بدم دو حلقه تو در تو به هم وابستن یا نه؟ - redflight - 14 آبان ۱۳۹۱ ۱۲:۵۹ ب.ظ
خب درسته دیگه :دی for j:=1 to m do و for j:=1 to m do توی حلقه ی for i:=1 to n do begin هستند حلقه ی i به تعداد n بار اجرا می شه پس داخلش را ضربدر N می کنیم n(داخلش) داخلش هم حلقه for j به تعداد m بار , while هم لگاریتمیه اینجا چون شمارنده while داره با این دستور تغیر می کنه j:=j*2 پس داخل حلقه i می شه m+logn در کل شد : n(m+logn)a |
چطوری تشخیص بدم دو حلقه تو در تو به هم وابستن یا نه؟ - masoud.bala - 14 آبان ۱۳۹۱ ۰۵:۲۱ ب.ظ
دقیقا این دوستمون خوبم واست تریس کرد ببین مهندس تریس اینها نیاز به یکمی تمرین داره خیلی گیر داری به متغیر ها مقدار بده رفتارش دستت می یاد جدول تریس بکش بعدش قشنگ تریس کن مقدار ها را کم هم نده تا ۸ بده رفتارش دستت می یاد |
چطوری تشخیص بدم دو حلقه تو در تو به هم وابستن یا نه؟ - redflight - 14 آبان ۱۳۹۱ ۰۶:۳۷ ب.ظ
اااااااااااااااا خط سوم به جای for j:=1 to m do منظورم while بوده ، کپی نشده انگار ببخشید یعنی این: for j:=1 to m do و while.... توی حلقه ی for i:=1 to n do begin هستند |
چطوری تشخیص بدم دو حلقه تو در تو به هم وابستن یا نه؟ - ania_13 - 15 آبان ۱۳۹۱ ۰۶:۴۳ ب.ظ
ممنونم از همه شما عزیزان |