Ho$∑∫N
12-06-2008, 17:11
با سلام خدمت دوستان
توي كتاب ديتل در تمرينات بخش بازگشت مسئله برج هانوي مطرح شده ولي من هر چي سعي كردم نتونستم به روش بازگشتي كه گفته شده مسئله رو حل كنم. تعريف خود كتاب :
انتقال n ديسك را ميتوان بر حسب انتقال n-1 ديسك (بازگشتي) به صورت زير در نظر گرفت :
الف) n-1 ديسك را از ميلهي 1 به ميله 2 منتقل كن و از ميله 3 به عنوان محل موقت استفاده كن.
ب)آخرين ديسك (بزرگترين) ديسك را از ميله 1 به ميله 3 منتقل كن.
ج) n-1 ديسك را از ميله 2 به ميله 3 منتقل كن و از ميله 1 به عنوان محل موقت استفاده كن.
اين فرايند زماني پايان مييابد كه تعداد ديسك هايي كه بايد انتقال يابند n=1 شود (حالت پايه).اين كار به سادگي و بدون نياز به محل موقت انجام ميشود.
بعد در كتاب نوشته بايد براي نوشتن برنامه و حل مسئله از يك تابع بازگشتي با پارامتر هاب زير استفاده كنيد :
الف)تعداد ديسك هايي كه بايد انتقال يابند.
ب)ميلهاي كه در ابتدا ديسك ها روي آن قرار گرفته اند.
ج)ميلهي كه پشتهي ديسك ها بايد به آن انتقال يابند.
د)ميله اي به عنوان محل موقت.
برنامه بايد دقيقا دستورات انتقال را چاپ كند.
در واقع من توي فهم اين مسئله و روش حلش مشكلم دارم و نميتونم بصورت بازگشتي حلش كنم. اگر دوستان خواستند كد بدن در مورد كدشون توضيح بدن و تا ميتونن و اگه براشون امكان داره از اضافات دوري كنن تا من هم بفهمم. اون قسمت هايي رو هم كه توي متن بالا قرمز نوشتم رو هم مشكل دارم. در واقع من اصلا اين روش حل رو متوجه نميشم. خواهشان كمك كنيد.به عنوان مثال من نميدونم از پارامتر هاي تعريف شده براي سه ميله چطوري استفاده كنم.
توي كتاب ديتل در تمرينات بخش بازگشت مسئله برج هانوي مطرح شده ولي من هر چي سعي كردم نتونستم به روش بازگشتي كه گفته شده مسئله رو حل كنم. تعريف خود كتاب :
انتقال n ديسك را ميتوان بر حسب انتقال n-1 ديسك (بازگشتي) به صورت زير در نظر گرفت :
الف) n-1 ديسك را از ميلهي 1 به ميله 2 منتقل كن و از ميله 3 به عنوان محل موقت استفاده كن.
ب)آخرين ديسك (بزرگترين) ديسك را از ميله 1 به ميله 3 منتقل كن.
ج) n-1 ديسك را از ميله 2 به ميله 3 منتقل كن و از ميله 1 به عنوان محل موقت استفاده كن.
اين فرايند زماني پايان مييابد كه تعداد ديسك هايي كه بايد انتقال يابند n=1 شود (حالت پايه).اين كار به سادگي و بدون نياز به محل موقت انجام ميشود.
بعد در كتاب نوشته بايد براي نوشتن برنامه و حل مسئله از يك تابع بازگشتي با پارامتر هاب زير استفاده كنيد :
الف)تعداد ديسك هايي كه بايد انتقال يابند.
ب)ميلهاي كه در ابتدا ديسك ها روي آن قرار گرفته اند.
ج)ميلهي كه پشتهي ديسك ها بايد به آن انتقال يابند.
د)ميله اي به عنوان محل موقت.
برنامه بايد دقيقا دستورات انتقال را چاپ كند.
در واقع من توي فهم اين مسئله و روش حلش مشكلم دارم و نميتونم بصورت بازگشتي حلش كنم. اگر دوستان خواستند كد بدن در مورد كدشون توضيح بدن و تا ميتونن و اگه براشون امكان داره از اضافات دوري كنن تا من هم بفهمم. اون قسمت هايي رو هم كه توي متن بالا قرمز نوشتم رو هم مشكل دارم. در واقع من اصلا اين روش حل رو متوجه نميشم. خواهشان كمك كنيد.به عنوان مثال من نميدونم از پارامتر هاي تعريف شده براي سه ميله چطوري استفاده كنم.