PDA

View Full Version : مشکل در فهم حلقه های متداخل for



sir_man
سه شنبه 06 مرداد 1394, 15:30 عصر
سلام دوستان
من کد زیر رو دارم ، 3 تا حلقه ی متداخل داره و n = 3 هست .
خروجی میشه 6 ( sum = 6 )
مشکل رو هم توو عنوان گفتم .
اگر کسی کمک کنه خیلی ممنون میشم بفهمم مفهوم چی هست

.; <

void main ()
{ int sum = 0 ;
for ( int i = 0 ; i < n ; i++ )
for ( int j = 0 ; j < i*i ; j++ )
for ( int k = 0 ; k < j ; k++ )
sum++
cout << sum ;
}

ehsan_faal
سه شنبه 06 مرداد 1394, 16:02 عصر
بار اول که i صفر باشه حلقه زیریش اجرا نمیشه و همینطور حلقه سوم.
بار دوم i یک باشه j یکبار اجرا میشه و مقدار صفر میگیره و بنابراین حلقه سوم اصلا اجرا نمیشه.
بار آخر i برابر 2 و j مقادیر 0و1و2و3 رو میگیره که باز هم در صورت صفر بودن حلقه سوم کنسل میشه واگر یک باشه حلقه سوم یکبار اجرا میشه و sum میشه 1.
حالا j میشه 2 , و حلقه سوم دو بار با مقادیر 0و1 اجرا میشه که البته مقادیرش مهم نیستن و هر بار هم یه واحد به مقدار قبلی sum اضافه میشه پس sum میشه 3.
بار آخر که j مقدار 3 رو میگیره k از 0 تا 2 میره جلو یعنی 3 بار پس سه واحد دیگه هم به مقدار فعلی sum اضافه میشه و نهایتا sum میشه 6.

amirtork
چهارشنبه 07 مرداد 1394, 16:54 عصر
سلام.
برای درک بهتر نحوه ی عملکرد حلقه های تو در تو (متداخل) بهتره به روش های سنتی رو بیارید! قلم و کاغذ رو بگیرید و هر مرحله رو روی کاغذ به تصویر بکشید! بهترین روشی هست که من تا به حال برای کسب بهترین درک از نحوه ی عملکرد حلقه های تو در تو دیدم.
البته میتونید از قابلیت Trace در دیباگر هم کمک بگیرید، اما همونطور که گفتم، من روش اول رو بیشتر می پسندم.