تالار گفتمان مانشت
سوال از الگوریتم های بازگشتی - نسخه‌ی قابل چاپ

سوال از الگوریتم های بازگشتی - zeinab - 05 خرداد ۱۳۹۱ ۱۲:۵۷ ب.ظ

آیا این جمله درسته یا نه؟
الگوریتم های بازگشتی فقط بصورت تابع قابل نوشتن است و ازروال نمیتوان استفاده کرد.
اما اگر غیربازگشتی (تکراری) باشد فرقی ندارد.


سوال از الگوریتم های بازگشتی - fatima1537 - 05 خرداد ۱۳۹۱ ۰۲:۰۵ ب.ظ

اگر منظورتون برنامه نویسی هست،تا یه حدی میتونه درست باشه
چون توی بازگشتیها معمولا بعد از فراخوانیهای پی در پی در آخر میخوایم یک مقدار را برگردانیم و مرتبا یک عملیات محاسباتی انجام بدیم.ولی روالها معمولا(در بعضی زبانها )مقداری را برنمیگردانند

سوال از الگوریتم های بازگشتی - lsamimi - 05 خرداد ۱۳۹۱ ۰۲:۰۸ ب.ظ

راستش تا اونجایی که من میدونم فرق روال و تابع در اینه که تابع فقط می تواند یک خروجی داشته باشد ولی روال هر تعدادی(درس زبانهای برنامه ستزی)
در ضمن در خیلی از زبانها روال قابل تعریف نیست اما در زبانهایی مثل پاسکال هر دو تعریف می شوند.
برای مثال در زبان پاسکال تابع با کلمه کلیدی function و روال با کلمه procedure مشخص می شود. اما فکر می کنم که هر دو به صورت بازگشتی قابل تعریف هستند و در صورتیکه به صورت بازگشتی تعریف شوند در هر فراخوانی رکورد فعالیتشون بالای پشته ذخیره میشه تا آدرس دستور بعدی پس از اجرای کامل یک تابع یا روال گم نشود

سوال از الگوریتم های بازگشتی - yaser_ilam_com - 05 خرداد ۱۳۹۱ ۰۲:۱۳ ب.ظ

ببین اصلا من درست منظورت رو فهمیدمشما میگی تابع که همون Fanction هستش ولی وقتی میگی روال یعنی Procedure که در پاسکال بود درسته؟ اگه منظورت همینه در پاسکال فاکتوریل رو با هر دو میتوان نوشت
البته دوستان همونطور ذکر شد تابع فقط میتونه یک خروجی داشته باشد اما روال میتواند خروجی نداشته باشد البته به دلیل راحت بودن کار با تابع بیشتر از این زیربرنامه استفاده می شود

سوال از الگوریتم های بازگشتی - zeinab - 05 خرداد ۱۳۹۱ ۰۶:۳۷ ب.ظ

مسئله اینه که برا نوشتن الگوریتم مهمه به صورت تابع نوشته بشه یا روال؟ اینجور که گفتین پس فرقی نداره، آره؟ البته به قول دوستان روال تو زبان هایی مثل پاسکال کاربرد داره . اما میخوام بدونم . من دارم کتاب نیپولیتان (طراحی الگوریتم ها درc++) رو میخونم.

RE: سوال از الگوریتم های بازگشتی - a.hooshmand - 05 خرداد ۱۳۹۱ ۰۷:۵۵ ب.ظ

(۰۵ خرداد ۱۳۹۱ ۰۲:۱۳ ب.ظ)yaser_ilam_com نوشته شده توسط:  ولی وقتی میگی روال یعنی Procedure که در پاسکال بود درسته؟ اگه منظورت همینه Smileرو با هر دو میتوان نوشت

می توانید در پاسکال فاکتوریل را با Procedure بنویسید؟

در زبان C تابعی که مقدار void را باز می گرداند را می توان به جای procedure به کار برد.


برای ساخت برنامه های بازگشتی با استفاده از روش بازگشتی می توان از یک متغیر کمکی به جای مقدار بازگشتی استفاده کرد.


درست مثل سوالاتی که بدون استفاده از یک متغییر کمکی جای دو متغییر را عوض کنید؟

یا بدون استفاده از دستور if از دو عدد وارد شده مقدار کمتر را در a و بیشتر را در b بریزید؟

فقط شاید مشخص کردن چنین شرایطی باعث استفاده از procedure به جای function برای کاربردهای بازگشتی فاکتریل باشد.