صفحه 1 از 1
نیاز به کمک برای یک سوال ساختمان داده
ارسال شده: جمعه 29 مهر 1390, 10:03 am
توسط konkoorkk
سلام دوستان
این درس ساختمان داده تقریبا تنها درس مهم من هست که مونده و من هم نمیدونم چرا یاد نمیگیرم! حالا یه سوال هست این شکلی
سوال : مقدار (20,28)M را برای تابع بازگشتی زیر محاسبه کنید.
واقعا ممنون میشم اگر راهنماییم کنید.
با تشکر
Re: نیاز به کمک برای یک سوال ساختمان داده
ارسال شده: جمعه 29 مهر 1390, 12:07 pm
توسط PrinceOfPersia
درود دوست من،
ببین تابعهای بازگشتی چیز خاصی نیستند، تنها باید بتونی راحت روی کاغذ به ترتیب اجراش کنید، بهترین راه هم کشیدن درخت هست.
اینجا اسم تابع M هست، الان به درخت زیر دقت کن :
// تابع با مقدار ورودی 20 و 28 اجرا میشه ...
مرحله 1 : فراخوانی تابع A:20 ، B:28
مرحله دوم : آیا A از B کوچکتر است!؟ بله ، پس تابع را با مقدارهای Bو A فراخوانی کن( m( b,a
مرحله سوم : آیا A از B کوچکتر است!؟ خیر ، آیا B برابر با صفر است!؟ خیر ، پس تابع را با مقدارهای زیر فراخوانی کن :
کد: انتخاب همه
m(b , a mod b ) // b : 20 , a mod b = 28 % 20 = 8
در مرحلههای بعدی هم به همین شکل ...
تا زمانی که B به عدد 0 برسه ، اینجا خروجی نهایی شد 4
الان من تابع بالا رو با زبان ++C نوشتم و اجرا کردم :
(ذخیره و اجرا شده در سایت CodePad )
http://codepad.org/jqgZq3ho
خروجی شد
4 !
حالا به نحوه اجرا دقت کن :
کد: انتخاب همه
m(20,28)
m(28,20)
m(20,8)
m(8,4)
m(4,0)
4
اینم کدش :
http://codepad.org/I2qkYLOD
امیدوارم خوب گفته باشم.
Re: نیاز به کمک برای یک سوال ساختمان داده
ارسال شده: جمعه 29 مهر 1390, 5:03 pm
توسط konkoorkk
واقعا از لطفت ممنونم. کاملا متوجه شدم. خیلی لطف کردی.
Re: نیاز به کمک برای یک سوال ساختمان داده
ارسال شده: جمعه 29 مهر 1390, 6:16 pm
توسط PrinceOfPersia
konkoorkk نوشته شده:واقعا از لطفت ممنونم. کاملا متوجه شدم. خیلی لطف کردی.
خواهش میکنم ...
موفق باشید.