صفحه 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 نوشته شده:واقعا از لطفت ممنونم. کاملا متوجه شدم. خیلی لطف کردی.
خواهش می‌کنم ...

موفق باشید.