واضح آرشیو وب فارسی:سایت ریسک: mahdi bg08-03-2007, 05:28 AMسلام می خواستم موضوع توابع بازگشتی رو در زبان Pascal و زبان C/C++ بذارم در Pascal رو داخل دلفی اما C/C++ رو تو محیط Dos می نویسم (C++ ver 5. 02) چون C/C++ . Net رو نصب شده رو سبستمم ندارم امیدوارم به دردتون بخوره mahdi bg08-03-2007, 05:28 AMسلام اولش یه تعریف از تابع بازگشتی خیلی ساده:تابعی که کار های بازگشتی و تکراری رو با صدا زدن خودش انجام بده مثلا فاکتوریل factorial یعنی ضرب یه عدد در عدد قبلیش تا اینکه به یک(1) برسیم کار تکراری و قابل پیاده سازی به وسیله تابع برگشتی ضرب عدد در عدد قبلی mahdi bg08-03-2007, 05:29 AMسلام آموزش1:فاکتوریل در Pascal اول تابع زیر رو در private قسمت تعریف کنید !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!!حالا برای بدنه تابع !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! دو تا Edit رو فرم بذارین و یه Button حالا توی رویداد Click مربوط به Button بنویسید !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! حالا در C/C++ محیط C++ تحت داس !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! برای زبان C هم تغییرات کمی لازمه تبدیل Cout به Printf و .... ولی ساختار همینه امیدوارم به درتون بخوره هر جا سوالی بود در خدمتم اگه بلد باشم جواب می دم MasterData08-03-2007, 12:56 PMبازم گير مد تشكر هستيم تششششششششششششششششكر Mahmood_N09-03-2007, 09:23 PMسلام ممنون ، تاپیک جالبی رو باز کردی ... موفق باشی ... mahdi bg10-03-2007, 06:16 AMسلام آموزش 2 : چاپ دنباله n-…-5-4-3-2-1-2-3-4-5-…-n ابتدا در Delphi تابع Revers رو در قسمت private تعریف می کنیم !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!!در بدنه تابع می نویسیم !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! end دوتا Edit و یه Button روی فرم می ذاریم داخل Click مربوط به Button می نویسیم !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!!تابع در C/C++ !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!!با یه خورده تغییر در C هم می تونین بنویسید. امیدوارم به دردتون بخوره هر جا مشکلی بود در خدمتم اگه بتونم جواب می دم mahdi bg12-03-2007, 07:11 AMسلام منتظر توابع شما هم هستیم سلام ممنون ، تاپیک جالبی رو باز کردی ... موفق باشی ... چندتا دیگه هم نوشتم که می ذارم بهترین مبحث برنامه نویسی بعد از Database به نظرمن توابع بازگشتی هستن. یعنی این توابع یه چیز دیگه ان فقط اینو در باره توابع بازگشتی بگم که تمام تکنبک های برنامه نویسی ( غیر ازdatabase) یه طرف ، توابع بازگشتی هم همون طرف. mahdi bg12-03-2007, 07:20 AMآموزش3:بدست اوردن n امین عدد دنباله فیبوناچی در Pascal اول تابع زیر رو در private قسمت تعریف کنید !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!!بعدش تابع زیر رو در public قسمت تعریف کنید !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! حالا برای بدنه fibonachiPrivate تابع !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! و برای تابع fibonachi !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!!دو تا Edit رو فرم بذارین و یه Button حالا توی رویداد Click مربوط به Button بنویسید !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!!دقت کنید دو تا تابع تعریف شده ، برای حفظ امنیت برنامه هست(اگر بخواهین اینا را توی یه کلاس به مار ببرید) کاربر نباید به توابع اصلی شما دسترسی داشته باشد و باید یه تابع واسط تعریف شود حالا در C/C++ محیط C++ تحت داس !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!!برای زبان C هم تغییرات کمی لازمه تبدیل Cout به Printf و .... ولی ساختار همینه امیدوارم به درتون بخوره چون توابع رو خودم می نویسم ممکن بهینه تر هم پیدا بشه اما قبل از قرار دادن تست شون میکنم هر جا سوالی بود در خدمتم اگه بلد باشم جواب می دم netspc12-03-2007, 07:29 AMبرنامه نویسی بازگشتی بزرگترین مشکلی که داره استفاده بیش از اندازه از حافظه هست که باعث کند شدن اجراهای متوالی این نوع توابع میگردد. ولی یکی از مزیتهای این نوع توابع راحتی تبدیل فرمولهای ریاضی به کد برنامه نویسی و خوانایی کد میباشد کد پیدا کردن GCD بوسیله توابع بازگشتی: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! netspc12-03-2007, 07:34 AM!!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! این قسمت هم باید در درون تابع فیبو قرار بگیرد (لطفاً به تعریف کلی توابع برگشتی دقت بیشتری کنید). در ضمن اگر اشتباه نکنم سری فیبو از 0 شروع میشه !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! mahdi bg14-03-2007, 05:50 AMسلام این دفعه حضور دوستان انجمن C برای این که آموزش بهتر باشه و انسجام بیشتری بین مطالب باشه این دوتا آموزش رو در یک تاپیک زدم اگه سوالی داشتین می تونین توی این تاپیک بپرسین اگه بلد بودم جواب بدم چون C#.Net و C++.Net رو روی سیستمم ندارم نمی تونم توابع رو برای .Net بنویسیم اما فکر نکنم بردن این توابع از C++ تحت داس به محیط .Net کاری داشته باشه mahdi bg14-03-2007, 05:52 AMسلام در مورد توابع بازگشتی بگم که بعضی از مسائل فقط با توابع بازگشتی قابل حل هستن معروف ترین این توابع : برج های هانوی هستن هر دو versionشم netspc14-03-2007, 10:39 AMسلام این هم تابع بازگشتی برای برجهای هانوی تو سی !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! mahdi bg16-03-2007, 05:40 AMسلام netspc عزیز از توجه هتون ممنون گفتم که چون توابع رو خودم می نویسم ممکن بهینه تر هم پیدا بشه اما قبل از قرار دادن تست شون میکنم در ضمن اگر اشتباه نکنم سری فیبو از 0 شروع میشه تا اونجای که من می دونم از 1 شروع میشه اگه با 0 هم شروع بشه تفاوت چندانی نمی کنه تابع جواب می ده چندتا تابع ریاضی دارم می نویسم که می ذارم منتظر توابع سایر دو ستان نیز هستیم mahdi bg22-03-2007, 05:06 AMآموزش4:برعکس کردن رشته در Pascal اول تابع زیر رو در private قسمت تعریف کنید !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! حالا برای بدنه revers تابع قبلش یه متغییر به نام MyCha; از نوع Char تعریف کنید !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! دو تا Edit رو فرم بذارین و یه Button حالا توی رویداد Click مربوط به Button بنویسید !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! حالا در C/C++ محیط C++ تحت داس !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! برای زبان C هم تغییرات کمی لازمه تبدیل Cout به Printf و .... ولی ساختار همینه امیدوارم به درتون بخوره چون توابع رو خودم می نویسم ممکن بهینه تر هم پیدا بشه اما قبل از قرار دادن تست شون میکنم هر جا سوالی بود در خدمتم اگه بلد باشم جواب می دم justmp328-03-2007, 02:03 AMواقعآ دستتون درد نکنه... اگه میشه برنامه فیبوناچی را بصورت ران شده بزارین تا من تو دلفی 7 اجرا کنم... چو ن با تیکه دستورهای قبلی نتونستم خودم ردیفش کنم... متشکرم ninjavb31-01-2009, 02:56 PMبا سلام میشه این برنامه رو ردیابی و تریس کنید و توضیح بدید.(مرحله به مرحله) برنامه ای که ذو عدد از ورودی خوانده هریک از ارقام ان را در یک سطر چاپ کنه. اگه عدد کوچکتر از 10 باشه ان عدد را در خروجی چاپ کنه و تابع به برنامه فراخوانی بگرده. !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! مرد مباح31-01-2009, 10:07 PM1. دوست عزيز اسن تالاز مربوط به دلفي است. اگه جاي ديگه اين سوال رو ميپرسيدين بهتر بود. 2. خوشحالم كه يك نفر رو ديدم كه سرچ ميكنه و به همين دليل با كمال ميل توضيحات رو خدمتتون ميدم : در ابتداي برنامه كه كاملا واضح است و برنامه يك عدد رو ميگيره. در ادامه از تابع Wirte_V براي نمايش روي مونيتور استفاده ميكنه. وقتي عدد ورودي وارد اين تابع ميشه چك ميكنه ببينه كه آخرين عدد هست يا نه. وقتي تقسيم يك عدد صحيح بر 10 مقدار صفر باشه و يا اينكه خود عدد كمتر از 10 باشه، يعني آخرين عدد موجود هست. اگر يك عدد بزرگتر باشه مقدار تقسم اون بر 10 باعث ميشه كه يك رقم از سمت راست آن عدد كم بشه. به دليل اينكه تابع بازگشتي قبل از فرمان Printf قرار گرفته، اين تابع تا زماني كه به اولين رقم برسيد تكرار ميشه. و بعد از اون چون قبلا تمام فرايند تحليل صورت گرفته تمامي اعداد پشت هم نمايش داده ميشه. اميدوارم كه مطلب رو درست تونسته باشم توضيح بدم. ولي اگه مشكلي بود، بگو تا يك عدد رو برات توي برنامه تريس كنم. موفق باشي. ninjavb31-01-2009, 10:40 PMبا سلام دوست عزیز ممنون خوب بود ولی اگه میشه با یه عدد توضیح بده که کامل بیافته! با تشکر مرد مباح01-02-2009, 01:05 PMفرض كن عدد 4251 وارد شده. بنابر اين در مرحله اول Write_V(4251)i اجرا ميشه. داخل اين فانكشن برسي ميشه كه عدد از 10 كوچيكتر نيست. بنابراين عدد بر 10 تقسيم ميشه و دوباره به فاكنشن لينك ميشه. عدد دوم 425 و عدد سوم 42 و عدد چهارم 4 است. وقتي به عدد آخر ميرسه چون از 10 كوچكتره چاپش ميكنه. بعد يك مرحله به عقب بر ميگرده. يعني عدد 42. باقيمانده اين عدد بر 10 عدد 2 هست كه اونو چاپ ميكنه و يك مرحله ميره عقب و براي عدد 425 و 4251 هم باقيمانده ها رو بر 10 مينويسه. به اين ترتيب تمام ارقام زيدر هم نوشته ميشن. البته دليل زير هم نوشته شدن آن نيز استفاده از n/ هست. موفق باشي. F A R H A D01-02-2009, 11:37 PMالبته دوست عزیزم مرد مباح کامل توضیح دادند اما یه توضیح اضافی هم میدم که فکر کنم مفید باشه چند روز پیش یکی از دوستان در مورد پشته (stack) پرسیدند. یکی از کاربردهای پشته در انجام چنین مواردی هست شما اگر دقیقا رفتار کامپایلر رو در زمان اجرا، روی کاغذ پیاده کنید و با ساختار پشته آشنا باشید به راحتی میتونید به کاری که این کد انجام میده پی ببرید موفق باشید samandoor11-01-2011, 06:20 PMبا سلام خدمت دوستان من می خواستم در مورد برنامه زیر در زبان c که سری فیبوناچی را تولید میکند توضیحاتی از قبیل ردیابی خطی برنامه در قسمت توابع بازگشتی بدهید. //fibronachi #include<conio.h> #include<stdio.h> int fib(int n); int main() { int n; scanf("%d",&n); printf("%d",fib(n)); getch(); return 0; } int fib(int n) { if(n==2||n==1) return 1; return fib(n-1)+ fib(n-2); } سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 3073]