PDA

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;


موفق باشید .