بازگشت نتیجه دار چگونه انجام می گیرد ؟

2

بازگشت نتیجه دار چگونه انجام می گیرد ؟ 

کیانا ابراهیمی سوال پاسخ داده شده اکتبر 14, 2020
گذاشتن نظر
0

بازگشت نتیجه دار چگونه انجام می گیرد ؟ 

تاکنون، تنها زیرمجموعۀ کوچکی از پایتون را آموختهاید اما شاید جالب باشد که بدانید این زیر مجموعۀ کوچک یک زبان برنامهنویسی کامل است. یعنی بهوسیلۀ این زبان میتوانید هر چیـزي را کـه قابل محاسبه است، بیان کنید. هـر برنامـهاي کـه تـاکنون نوشـته شـده مـیتوانـد تنهـا بـا اسـتفاده از ویژگی هایی از زبان که تا این زمان آموختهاید بازنویسی شـود. (در واقـع، شـما بـه تعـداد محـدودي از دستورات نیاز دارید تا بتوانید واحدهایی همچون صفحه کلید، ماوس، دیسکها و . . . را کنتـرل کنیـد. اما این آخر ماجرا است!) اثبات این ادعا که اولین بار توسط «آلن تورینگ» انجام شده، تمرین قابل توجهی است (او یکی از اولین دانشمندان علم کامپیوتر اسـت. علـیرغـم اینکـه بعضـی عقیـده دارنـد «آلـن تورینـگ» یـک ریاضیدان است اما بسیاري از  دانشمندان اولیۀ علم کامپیوتر با ریاضیات شروع کردنـد). بنـابراین از آن به عنوان فرضیۀ تورینگ یاد میشود. اگر در جریان فرضیۀ محاسبات هستید، شانس دیدن اثبـات آن را خواهید داشت. براي اینکه به شما ایدهاي بدهیم که با ابزارهایی که تاکنون آموختهاید چه کارهـایی مـیتوانیـد انجام دهید، تعدادي از توابع ریاضی تعریف شده به حالـت بازگشـتی را ارزیـابی خـواهیم کـرد. تعریـف بازگشتی، شبیه یک تعریف حلقوي است. به این مفهوم که تعریف، شامل ارجاعی است به چیزهایی کـه تعریف شدهاند. یک تعریف حلقوي واقعی چندان مفید نیست: frabjuous :صفتی است براي شرح هر چیزي که frabjuous باشد !

این تعریف میگوید فاکتوریل عدد 0 ،1 است و فاکتوریل هر مقدار n برابر است با ضـرب n در فاکتوریل 1-n .بنابراین !3 برابر است با 3 تا !2 که خود برابر 2 تا !1 و آن هم برابر 1 در !0 اسـت. لذا نتیجه برابر 6 میباشد. اگر بتوانید تابع بازگشتیِ چیزي را بنویسید، معمولاً مـیتوانیـد یـک برنامـۀ پـایتون هـم بـراي ارزیابی آن بنویسید. اولین گام، مشخص کردن پارامترهاي تابع است. با تلاشی جزئـی متوجـه خواهیـد شد که factorial یک پارامتر میگیرد:

:(def factorial(n

اگر مقدار آرگومان تابع 0 باشد، کافی است 1 را بازگردانیم:

(:def factorial(n
if n == 0:
return 1

در غیر این صورت (این قسمت جالب برنامه است) ما باید یک فراخـوانی بازگشـتی بـراي پیـدا کردن فاکتوریلِ 1-n بسازیم و سپس آن را در n ضرب کنیم:

def factorial(n):
if n == 0:
return 1
else:
recurse = factorial(n-1)
result = n * recurse
return result

روند اجراي این برنامه شبیه به رونـد تـابع countdown در بخـش 4-9 اسـت. اگـر مـا تـابع فاکتوریل را با مقدار 3 صدا بزنیم: از آنجا که 3 مخالف 0 است، شاخۀ دوم را دنبال میکنیم که محاسبۀ مقدار فاکتوریل 1-n است. از آنجا که 2 مخالف 0 است، شاخۀ دوم را دنبال میکنیم کـه محاسـبۀ مقـدار فاکتوریـل 1-n است. از آنجا که 1 مخالف 0 است، شاخۀ دوم را دنبال میکنیم که محاسبۀ مقـدار فاکتوریـل
است n-1 از آنجا که 0 با 0 مساوي است، شاخۀ اول را دنبـال مـیکنـیم کـه برگردانـدن مقدار 1 بدون هیچ فراخوانی بازگشتی دیگر است. مقدار برگشتی (1 ( در n ، که برابر بـا 1 مـیباشـد، ضـرب شـده و نتیجـه بازگردانـده میشود. مقدار برگشتی (1 ( در n ، که برابر با 2 میباشد، ضرب شده و نتیجه بازگردانده میشود. مقدار برگشتی (2 ( در n ، که برابر با 3 میباشد، ضرب شده و 6 را نتیجه میدهد. مقدار بازگشـتی بـه اولین تابعی که فراخوانی شده باز میگردد. تحویل مقادیر بازگشتی به پشتۀ بالایی در نمودار توسط پیکانهایی نمایش داده شدهاند. در هر قاب مقدار بازگشتی result است که بهوسیلۀ n و recurse تولید شده است. توجه کنیـد کـه در قاب آخر متغیرهاي محلی recurse و result وجود ندارند، زیرا شاخۀ سازندة آنها اجرا نمیشود.

برای اموزش های ویدیویی زبان پایتون به بستر ویدیو های اموزشی بروید

بستر اموزش های ویدویی 

کیانا ابراهیمی سوال پاسخ داده شده اکتبر 14, 2020
گذاشتن نظر
پاسخ خود را بنویسید .
  • فعال
  • بازدیدها1122 times
  • پاسخ ها1 پاسخ
ورود به متاورس | متاورس ایرانی
ورود به متاورس ایران یا همان متاورس ملی

علامت ذره بین Tutorials سمت راست به رنگ قرمز به شما کمک خواهد کرد .

جدید ترین سوالات پرسیده شده

منقضی شدن سم بتانال 1 پاسخ | 0 آرا
ایا ایدز گزفتم؟ 0 پاسخ ها | 0 آرا
انتخاب ورزش رزمی 0 پاسخ ها | 1 رای
وزارت تعاون کار و رفاه اجتماعی نماد اعتماد الکترونیک اسناد و املاک کشور مرکز آموزش ویدیویی انجمن حم فروشگاه ملی تولید کنندگان مدیریت بر مدیران حم سامانه حیوانات رسانه ملی اخبار متا دانشگاه متاورس استخدام | دانش فروشگاه حم تبلیغات ملی بازار NFT متاورس رنگ نقشه ملی سه بعدی متا املاک و مستغلات