سلام
خانم سارا انگوري اگه شما يه چرخي توي كوچه پس كوچه هاي ايرانويچ بزنين متوجه ميشين كه فقط به سوالهايي جواب داده ميشن كه ازشون راهنمايي بخوان و نه لغمه (لقمه
) آماده.
ولي حالا كه تا اينجا اومدين بهتره كه دست خالي نرين . اوليشو نشتم ، يه توضيحي در مورد ش ميدم ، اگه همين روشو تو بقيه هم به كار بگيرين به راحتي به نتيجه ميرسشن .
اول غير بازگشتي كه خيلي سادس:
کد:
#include<iostream.h>
int n[10];
int a(int i){
int b=0;
while(0<=i){
b=b+n[i];
i--;
};
return b;
}
void main(){
int i=0;
while(i<10){
cout<<"ADADE ["<<i+1<<"]=";
cin>>n[i];
i++;
}
cout<<'\n'<<a(10)<<'\n';
}
حالا بازگشتي:
کد:
#include<iostream.h>
int n[10];
int a(int i ){
if(i<10)
return n[i]+a(i+1);
else
return 0;
}
void main(){
int i=0;
while(i<10){
cout<<"ADADE ["<<i+1<<"]=";
cin>>n[i];
i++;
}
cout<<'\n'<<a(0)<<'\n';
}
همونطور كه مشاهده ميكنين ، فرق تابع بازگشتي با غير بازگشي تو اينه كه تو غير بازگشتي تابع هيچ وقت خودشو فراخواني نميكنه ، در صورتي كه در بازگشتي حتما خودشو فراخواني ميكنه .
روش كار به اين صورته كه اول بايد يه رابطه بازگشتي براي مسئلت تعريف كني كه تو اينجا ميشه :
با اين رابطه خيلي راحت ميتوني تابع رو روي sum بگيري ، چون كه هميشه داره به خودش ارجاع داده ميشه .
اميدوارم توضيحاتم بتونه تو انجام بقيه تمرينات كمكتون كنه.
من تو را دوست دارم.. دیگری تو را دوست دارد.. دیگری دیگری را دوست دارد.. و این چنین است که ما تنهاییم..