View Full Version : کنترل تابع بازگشتی
amin1softco
یک شنبه 15 فروردین 1389, 23:32 عصر
ما اگه یک تابع بازگشتی رو در خودش فراخوانی کنیم چطوری می شه ؟؟؟
یعنی همچین چیزی
int b;
int recursive(int a){
if(){}// control func
recursive (recursive(b));
}
و چطور باید کنترلش کرد؟؟؟؟/
tdkhakpur
یک شنبه 15 فروردین 1389, 23:37 عصر
همه چیز به if شما بستگی دارد اصلا فرقی ندارد که تابع چگونه خودش را فراخوانی میکند.
amin1softco
دوشنبه 16 فروردین 1389, 08:36 صبح
نه منظورم اینه که چطوری می شه استدلالش کرد مثلا سری فیبوناتچی که بازگشت می خوره در هر مرحله 2 قسمت مجزا می شه حالا اگه در خودش دوباره خودش رو فراخوانی کنیم چطوری می شه؟؟؟
اگه یک مثال بذارید ممنون می شم
Salar Ashgi
دوشنبه 16 فروردین 1389, 12:22 عصر
یک مثال ساده :
#include <iostream>
#include <conio>
int f(int n){
if(n==1 || n==0)
return 1;
else
return 1+f(f(n/2));}
//=====================
int main(){
for(int i=1;i<=10;i++)
cout<<i<<" "<<f(i)<<endl;
getch();
}
trace کردنش با توابع بازگشتی معمولی فرقی نداره ؛
مثلا F با ورودی 5 :
f(5) :
1+f(f(2));
f(2) = 1+f(f(1));
f(1)=1;
f(2) = 2;
f(5) = 3;
موفق باشید .
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.