ورود

نسخه کامل مشاهده نسخه کامل : مشكل در مورد برج هاي هانوي و بازگشت



Ho$∑∫N
12-06-2008, 17:11
با سلام خدمت دوستان

توي كتاب ديتل در تمرينات بخش بازگشت مسئله برج هانوي مطرح شده ولي من هر چي سعي كردم نتونستم به روش بازگشتي كه گفته شده مسئله رو حل كنم. تعريف خود كتاب :
انتقال n ديسك را مي‌توان بر حسب انتقال n-1 ديسك (بازگشتي) به صورت زير در نظر گرفت :
الف) n-1 ديسك را از ميله‌ي 1 به ميله 2 منتقل كن و از ميله 3 به عنوان محل موقت استفاده كن.
ب)آخرين ديسك (بزرگترين) ديسك را از ميله 1 به ميله 3 منتقل كن.
ج) n-1 ديسك را از ميله 2 به ميله 3 منتقل كن و از ميله 1 به عنوان محل موقت استفاده كن.
اين فرايند زماني پايان مي‌يابد كه تعداد ديسك هايي كه بايد انتقال يابند n=1 شود (حالت پايه).اين كار به سادگي و بدون نياز به محل موقت انجام ميشود.
بعد در كتاب نوشته بايد براي نوشتن برنامه و حل مسئله از يك تابع بازگشتي با پارامتر هاب زير استفاده كنيد :

الف)تعداد ديسك هايي كه بايد انتقال يابند.
ب)ميله‌اي كه در ابتدا ديسك ها روي آن قرار گرفته اند.
ج)ميله‌ي كه پشته‌ي ديسك ها بايد به آن انتقال يابند.
د)ميله اي به عنوان محل موقت.

برنامه بايد دقيقا دستورات انتقال را چاپ كند.

در واقع من توي فهم اين مسئله و روش حلش مشكلم دارم و نمي‌تونم بصورت بازگشتي حلش كنم. اگر دوستان خواستند كد بدن در مورد كدشون توضيح بدن و تا مي‌تونن و اگه براشون امكان داره از اضافات دوري كنن تا من هم بفهمم. اون قسمت هايي رو هم كه توي متن بالا قرمز نوشتم رو هم مشكل دارم. در واقع من اصلا اين روش حل رو متوجه نميشم. خواهشان كمك كنيد.به عنوان مثال من نمي‌دونم از پارامتر هاي تعريف شده براي سه ميله چطوري استفاده كنم.

soda_india
12-06-2008, 17:38
salam manozoret az bazgashti ba recursion ast ?

Ho$∑∫N
12-06-2008, 17:46
بله با recursion

soda_india
12-06-2008, 17:57
ok feker konam ye bar neveshtamaesh hala ye mail bezar paida kardam barat mail mikonam

Ho$∑∫N
12-06-2008, 18:09
hoseinsuzuki@gmail.com

soda_india
12-06-2008, 18:10
salam 10min barat miferestam

soda_india
12-06-2008, 18:23
salam agha man barat fesrestadam dige vaght nashod compilesh konam feker nakonam erro bede hala khodet ham checkesh kon tc

Ho$∑∫N
12-06-2008, 21:17
يك دنيا از شما ممنون هستم. هنوز نديدم ولي اميد دارم كه احتياجم رو برطرف كنه.

Ho$∑∫N
12-06-2008, 21:24
واي دوست عزيز من يه چيزي رو فراموش كردم بگم. برنامه بايد با سي پلاس پلاس باشه و همچنين من توضيح خواستم و همونطور كه گفتم مي‌خوام بفهمم. ولي از شما هم ممنون.

soda_india
12-06-2008, 21:38
salam hala man saay mikonan mikonam barat ba c++ benevisam albate ta 2 ya 3 rpze dige vali in baon chiiz ke shoma mikhastitit motabeghat dare