PDA

View Full Version : تابع بازگشتی



moh3en_f1
پنج شنبه 26 خرداد 1390, 21:02 عصر
سلام
دوستان من میخوام بدونم تابع بازگشتی چیه ؟ کجا مورد استفاده میگیره ؟
توی تابع بازگشتی مثلاً چه جوری میشه
X1*X2*X3*…*Xn

رو حساب کرد؟ الان این برنامه ای که من نوشتم کجاش ایراد داره ؟ کسی میتونه درستش رو بنویسه ممنونم



# include <iostream.h>
baz(int x, int n) {
if (x=1) return x;
else {
for (int i=1; i<n; i++) return x*=baz(x)
}

code_baz
پنج شنبه 26 خرداد 1390, 21:56 عصر
تابعی که خودش خودش رو فراخوانی میکنه
مثلا برای به توان رسوندن یه عدد:

# include <iostream.h>
int baz(int x, int n) //you should declare type of your func()
{
if (n==0) return x;
else
return x*baz(x,n-1) //just multiply x to baz(x,n-1)
}


توی تابع بازگشتی باید یک شرط توقف داشته باشه

code_baz
پنج شنبه 26 خرداد 1390, 21:58 عصر
http://www.qazvin.biz/index.php?option=com_content&view=article&id=113:---cc-&catid=53:programin- (http://www.qazvin.biz/index.php?option=com_content&view=article&id=113:---cc-&catid=53:programin-lerning&Itemid=79)lerning&Itemid=79 (http://www.qazvin.biz/index.php?option=com_content&view=article&id=113:---cc-&catid=53:programin-lerning&Itemid=79)

این لینک رو نگاه کن...

code_baz
پنج شنبه 26 خرداد 1390, 22:00 عصر
اگه تابع فاکتوریل رو میخوای بدونی اینجوریه:

# include <iostream.h>
int baz(int x) //you should declare type of your func()
{
if (x==1) return 1;
else
return x*baz(x-1) //just multiply x to baz(x)
}

moh3en_f1
جمعه 27 خرداد 1390, 09:13 صبح
یه چیزهایی فهمیدم ولی بازم نتونستم
X1*X2*X3*…*Xn
این رو حل کنم ؟ برای حل این باید چی کنم ؟ شرط توقف چیه ؟

code_baz
جمعه 27 خرداد 1390, 10:52 صبح
این که میگی همون فاکتوریل هست که کدش رو بالا گذاشتم
با فرض اینکه x یعنی ورودی مساوی با 5 هست:

5*baz(4)
5*4*baz(3)
5*4*3*baz(2)
5*4*3*2*baz(1)
5*4*3*2*1

شرط خروج اینه که x=1 بشه که چون ما توی هر فراخوانی x رو کم میکنیم به 1 حتما میرسیم

یه سرچی هم توی همین سایت برای تابع بازگشتی بکن شاید یه چیزهایی پیدا کنی