قضیه ی return (کلمه ی کلیدی return) :
return معمولا تو تابع استفاده میشه و اگه برابر یه مقدار شد ، اگه تابع فراخونی بشه ، اون مقداری که تو return دادیم رو برمیگردونه . مثلا :
کد:n=0 function num(n) if n==0 then return 1 end Dialog.Message("Notice", num(n), MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
در اینجا تو خروجی ، num(n) همون مقدار return ای هست که برابر 1 بود ینی تو خروجی نوشته میشه 1
مثلا فاکتوریل رو میخایم با این روش حساب کنیم :
کد:n = Input.GetText("Input1"); n = String.ToNumber(n); function factorial(n) if n == 0 then return 1 else return n * factorial(n - 1) end end Dialog.Message("Notice", factorial(n), MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
تو این دستور از ورودی اینپوت مقداری که وارد شدش رو میگیره و اگه برابر 0 بود (تو ورودی اینپوت عدد 0 نوشته شده بود ) ، تو خروجی factorial(n) ، 1 میشه ینی مینویسه تو خروجی 1
و اگه هر عدد دیگه ای بود ، مثلا اگه بود 3 ، خود اون عدد ضربدر factorial یکی از خودش کمتر حساب میشه ینی اینجوری میشه :
3*factorial(2)
چون تابع factorial دوباره فراخونی شد پس دوباره این تابع اجرا میشه اما این بار با پارامتر یکی کمتر از خودش ینی n=2 ینی در واقع خودش از داخل خودش ، فراخونی میکنه و صدا میزنه تابع خودش رو ینی در واقع همون کار تابع بازگشتی رو میکنه
باز چون n=2 هه ، باز هم این قسمت else اجرامیشه ینی
n * factorial(n -1)
این بار که n=2 هه پس میشه :
3*factorial(2)
خود factorial(2) که مقدار باز گشتی بود دوباره فراخونی میشه و میشه :
2* factorial(1)
ینی در واقع تا حالا شد :
3*(2* factorial(1))
دوباره تابع factorial(1) که اینبار مقدار n برابر 1 هه اجرا میشه و همه ی قبلی ها مثل بالا ضرب میشن در factorial(1) :
factorial(3*(2*(1)))
در اینجا ، تا factorial(1) محاسبه میشه که میشه : factorial(0)*1 و چون factorial(0) مخالف شرط اول تابع هه ، پس فقط تا 1 ضرب میشه و factorial(0) که میشد factorial(-1)*-1 اجرا نمیشه
پس :
3*2*1=6
پس فاکتوریل 3 که میشه 6 بدست اومد






پاسخ با نقل قول

Bookmarks