SlideShare a Scribd company logo
1 of 30
Download to read offline
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫مدرس‬:
‫شیرافکن‬ ‫فرشید‬
‫دکتری‬ ‫دانشجوی‬‫تهران‬ ‫دانشگاه‬
(‫ارشد‬‫کارشناسی‬ ‫و‬‫کارشناسی‬:‫افزار‬ ‫نرم‬ ‫کامپیوتر‬( )‫دکتری‬:‫انفورماتیک‬ ‫بیو‬)
‫ها‬ ‫داده‬ ‫ساختمان‬
(‫بازگشتی‬ ‫توابع‬)
1
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫تعریف‬
2
‫تابع‬‫بازگشتی‬(recursive):
‫تابعی‬‫است‬‫که‬‫حاوي‬‫حداقل‬‫يک‬‫دستور‬‫باشد‬‫که‬‫خود‬‫تابع‬‫را‬‫صدا‬‫بزند‬.‫اين‬‫تابع‬‫به‬‫تعداد‬‫مراحل‬‫محدودي‬‫اجرا‬‫‌ش‬‫ی‬‫م‬‫ود‬‫و‬
‫پس‬‫از‬‫آن‬‫متوقف‬‫‌شود‬‫ی‬‫م‬.
‫مثال‬‫هايی‬‫از‬‫توابع‬‫بازگشتی‬:
1-‫فاکتوريل‬
2-‫مجموع‬‫اعداد‬1‫تا‬n
3-‫توان‬
4-‫ترکیب‬
5-‫خارج‬‫قسمت‬‫تقسیم‬‫صحیح‬
6-‫آکرمان‬
7-‫هانوي‬
8-‫فیبوناچی‬
9-‫زاد‬‫و‬‫ولد‬‫خرگوش‬‫ها‬
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫فاکتوریل‬ ‫تابع‬
3
‫تابع‬‫زیر‬‫فاکتوریل‬n‫را‬‫محاسبه‬‫می‬‫کند‬:
f( n ){
if (n==1)
return 1;
else
return n * f(n-1);
}
‫مثال‬‌:‌‫فراخوانی‌تابع‌با‌مقدار‬4‌:
f(4)=4*f(3)=4*6=24
f(3)=3*f(2)=3*2=6
f(2)=2*f(1)=2*1=2






1)1(
11
)(
nnfn
n
nf
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫اعداد‬ ‫مجموع‬1‫تا‬n
4
‫اعداد‬ ‫مجموع‬ ‫زیر‬ ‫تابع‬1‫تا‬n‫کند‬ ‫می‬ ‫محاسبه‬ ‫را‬:
sum( n )
{
if (n==1)
return 1;
else
return n+ sum(n-1) ;
}
‌‫خروجی‌فراخوانی‌تابع‬‌‫به‬‌‫ازاي‬n=3‌‫برابر‬6‫است‬‌‌:
sum(3)=3+sum(2) =3+3=6
sum(2)=2+sum(1) =2+1=3






1)1(
11
)(
nnsumn
n
nsum‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫توان‬ ‫تابع‬
5
‫تابع‬‫زير‬‫مقدار‬‫را‬‫محاسبه‬‫می‬‫کند‬:(‫ورودي‬‫ها‬‫صحیح‬‫و‬‫مثبت‬‫هستند‬)
f (n , m){
if (m==1)
return n;
else
return n * f(n,m-1);
}
‫به‌طور‌نمونه‌تابع‌را‌به‌صورت‬f(3,4)‫فراخوانی‌می‌کنیم‬:
f(3,4) = 3 * f(3,3) =3*3*3*3
f(3,3) = 3 * f(3,2) =3*3*3
f(3,2) = 3 * f(3,1) =3*3






1)1,(
1
),(
mmnfn
mn
mnf
m
n
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫ترکیب‬ ‫تابع‬
6
‫تابع‬f‫ترکیب‬m‫از‬n‫را‬‫محاسبه‬‫می‬‫کند‬:
f ( n , m )
{
if ( (n==m) || (m==0) )
return 1;
else
return f(n-1 , m) + f(n-1 , m-1);
}
‌‫فراخوانی‬f(4,2)‌:
f (4,2) = f (3,2) + f (3,1) =3+3=6
f (3,2) = f (2,2) + f (2,1) =1+2=3
f (3,1) = f (2,1) + f (2,0) =2+1=3
f (2,1) = f (1,1) + f (1,0) =1+1=2
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫تابع‬div
(‫صحیح‬ ‫تقسیم‬ ‫قسمت‬ ‫خارج‬ ‫محاسبه‬)
7
‫محاسبه‬‫خارج‬‫قسمت‬‫تقسیم‬‫صحیح‬a‫بر‬b:
‫فراخوانی‬f(11,3):
f (11,3) = f (8,3) + 1 = 2+1=3
f (8,3) = f (5,3) + 1 = 1+1=2
f (5,3) = f (2,3) + 1 = 0+1=1
‫تمرين‬:‫با‬‫تغییري‬‫در‬‫اين‬،‫تابع‬mod‫را‬‫پیاده‬‫سازي‬‫کنید‬.






babbaf
ba
baf
1),(
0
),(
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫آکرمان‬ ‫تابع‬
8
‫تابع‬‫زير‬‫به‬‫نام‬‫آکرمان‬‫معروف‬‫است‬:
‫فراخوانی‬f(1,1):
f ( 1 , 1 )
= f ( 0 , f ( 1 ,0 ) )
= f ( 0 , f ( 0 , 1 ) )
= f ( 0 , 2 )
=3









0,0))1,(,1(
0)1,1(
01
),(
babafaf
baf
ab
baf
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫آکرمان‬ ‫تابع‬ ‫در‬ ‫روابطی‬
9
‫در‬‫تابع‬‫آکرمان‬‫روابط‬‫زیر‬‫برقرار‬‫است‬:
‫به‬‫طور‬‫نمونه‬:
 32),4(
32),3(
3)3(2),2(
3)3(2),1(
3
2
3
2...






n
n
nf
nf
nnf
nnf
173)37(2)7,2( f
102132)7,3( )37(
 
f 32)1,4(
22
2
f
93)37(2)7,1( f
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫هانوی‬ ‫برج‬
10
‫سه‬‫میله‬A,B,C‫وجود‬،‫دارد‬‫که‬n‫مهره‬‫بر‬‫روي‬‫میله‬A‫قرار‬‫دارد‬.‫هدف‬‫انتقال‬n‫مهره‬‫به‬‫میله‬C‫است‬‫که‬‫براي‬‫اين‬‫کار‬‫از‬‫میله‬
B‫کمک‬‫گرفته‬‫می‬‫شود‬.
‫اندازه‬‫مهره‬‫ها‬‫در‬‫میله‬A‫از‬‫پايین‬‫به‬‫باال‬‫کاهش‬‫می‬‫يابد‬.
‫در‬‫انتقال‬‫مهره‬‫ها‬‫هرگز‬‫مهره‬‫بزرگتر‬‫بر‬‫روي‬‫مهره‬‫کوچکتر‬‫نبايد‬‫قرار‬‫بگیرد‬.‫در‬‫هر‬‫بار‬‫فقط‬‫امکان‬‫انتقال‬‫يک‬‫مهره‬‫وجود‬‫دا‬‫رد‬‫که‬‫از‬
‫باالي‬‫میله‬‫انتخاب‬‫می‬‫شود‬.‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫هانوی‬ ‫برج‬(‫ادامه‬)
11
‫در‬‫صورت‬‫وجود‬‫بیش‬‫از‬‫يک‬‫مهره‬،‫مسئله‬‫را‬‫به‬‫صورت‬‫زير‬‫حل‬‫می‬‫کنیم‬:
1)‫انتقال‬n-1‫مهره‬‫از‬‫میله‬A‫به‬‫میله‬B.
2)‫انتقال‬‫مهره‬n‫ام‬‫از‬‫میله‬A‫به‬‫میله‬C.
3)‫انتقال‬n-1‫مهره‬‫از‬‫میله‬B‫به‬‫میله‬C.
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫هانوی‬ ‫برج‬(‫ادامه‬)
12
‫الگوریتم‬‫انتقال‬n‫مهره‬‫از‬A‫به‬C‫به‬‫کمک‬B
tower (n , A, B, C)
{
if (n ==1 )
A to C;
else {
tower ( n–1 , A, C, B);
A to C;
tower ( n–1 , B, A, C);
}
}
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫هانوی‬ ‫برج‬(‫مثال‬)
13
‫انتقال‬3‫مهره‬‫از‬‫میله‬A‫به‬‫میله‬C‫به‬‫کمک‬‫میله‬B:T(3,A,B,C)






























)7(),,,1(
)6(
)5(),,,1(
),,,2(
)4(
)3(),,,1(
)2(
)1(),,,1(
),,,2(
CACBAT
CB
ABACBT
CABT
CA
BCBACT
BA
CACBAT
BCAT ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫تمرین‬
14
‫مسئله‬‫برج‬‫هانوي‬‫را‬‫با‬‫سه‬‫میله‬A،B‫و‬C‫در‬‫نظر‬‫بگیريد‬‫که‬‫در‬‫ابتدا‬n‫مهره‬‫به‬‫ترتیب‬‫در‬‫میله‬A‫قرار‬‫دارند‬.‫مهره‬‫کوچک‬‫تر‬‫بر‬‫روي‬
‫مهره‬‫بزرگ‬‫تر‬‫قرار‬‫دارد‬.
‫می‬‫خواهیم‬‫با‬‫رعايت‬‫مقررات‬‫اين‬،‫مسئله‬‫همه‬‫مهره‬‫ها‬‫را‬‫به‬‫میله‬B‫ببريم‬‫با‬‫اين‬‫شرط‬‫که‬‫نمی‬‫توان‬‫هیچ‬‫مهره‬‫اي‬‫را‬‫يک‬‫راست‬‫از‬
‫میله‬A‫به‬B‫يا‬‫از‬B‫به‬A‫برد‬.
‫اگر‬T(n)‫کمینه‬‫تعداد‬‫حرکت‬‫مهره‬‫ها‬‫براي‬‫اين‬‫مسئله‬،‫باشد‬‫رابطه‬‫بازگشتی‬‫براي‬‫اين‬‫مسئله‬‫را‬‫بنويسید‬. ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫فیبوناچی‬ ‫تابع‬
15
‫محاسبه‬‫جمله‬n‫ام‬‫سری‬‫فیبوناچی‬:(0,1,1,2,3,5,8,13,21,34,…)
f(n){
if ((n==0) || (n==1) )
return n;
else
return f(n-1) + f(n-2);
}
‌‫محاسبه‌جمله‌چهارم‌سري‌فیبوناچی‬‌‌:
f(4)=f(3) + f(2) =2+1=3
f(3)=f(2) + f(1) =1+1=2
f(2)=f(1) + f(0) =1+0=1









2)2()1(
11
00
)(
nnfnf
n
n
nf‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫ها‬ ‫خرگوش‬ ‫ولد‬ ‫و‬ ‫زاد‬
16
‫در‬‫یک‬‫جزیره‬‫یک‬‫جفت‬‫خرگوش‬‫نر‬‫و‬‫ماده‬‫نوزاد‬‫وجود‬‫دارد‬‫و‬‫مدل‬‫رشد‬‫جمعیت‬‫خرگوش‬‫ها‬‫به‬‫صورت‬‫زیر‬‫است‬:
(1)‫خرگوش‬‫ها‬‫يک‬‫ماه‬‫پس‬‫از‬‫تولد‬‫به‬‫سن‬‫بلوغ‬‫می‬‫رسند‬.
(2)‫دوران‬‫بارداي‬‫يک‬‫ماه‬‫است‬.
(3)‫هنگامی‬‫که‬‫خرگوش‬‫ماده‬‫به‬‫سن‬‫بلوغ‬‫می‬‫رسد‬‫حتما‬‫باردار‬‫می‬‫شود‬.
(4)‫خرگوش‬‫ماده‬‫در‬‫هر‬،‫بارداري‬‫يک‬‫خرگوش‬‫نر‬‫و‬‫يک‬‫خرگوش‬‫ماده‬‫به‬‫دنیا‬‫می‬‫آورد‬.
(5)‫خرگوش‬‫ها‬‫هرگز‬‫نمی‬‫میرند‬.
‫رابطه‬‫بازگشتی‬‫بنويسید‬‫که‬‫تعداد‬‫خرگوش‬‫ها‬‫را‬‫در‬‫شروع‬‫ماه‬n‫ام‬‫نشان‬‫دهد؟‬
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫ها‬ ‫خرگوش‬ ‫ولد‬ ‫و‬ ‫زاد‬(‫ادامه‬)
17
‫پاسخ‬:
‫تعداد‬‫جفت‬‫خرگوش‬‫ها‬‫در‬‫شروع‬‫ماه‬n‫ام‬‫برابر‬‫است‬‫با‬‫مجموع‬
‫دو‬‫مقدار‬‫زير‬:
‫الف‬-‫تعداد‬‫جفت‬‫خرگوش‬‫هاي‬‫ماه‬‫قبل‬
‫ب‬-‫تعداد‬‫جفت‬‫نوزادان‬(‫که‬‫برابر‬‫است‬‫با‬‫تعداد‬‫جفت‬‫خرگوش‬‫هاي‬
‫بالغ‬‫ماه‬‫قبل‬‫که‬‫آن‬‫هم‬‫برابر‬‫است‬‫با‬‫کل‬‫خرگوش‬‫هاي‬‫دو‬‫ماه‬‫قبل‬)
‫بنابراين‬‫داريم‬:
1)2(,1)1(  ff
)2()1()(  nfnfnf
233,144,89,55,34,21,13,8,5,3,2,1,1
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫کاربرد‬‫پشته‬‫بازگشتی‬ ‫های‬ ‫برنامه‬ ‫زیر‬ ‫در‬
‫تعريف‬‫پشته‬:(stack)
‫پشته‬‫ساختمان‬‫داده‬‫اي‬‫است‬‫که‬‫حذف‬‫و‬‫اضافه‬‫از‬‫باالي‬‫آن‬‫انجام‬‫‌شود‬‫ی‬‫م‬.
‫پشته‬‫را‬FILO‫‌نامند‬‫ی‬‫م‬،‫چون‬‫آخرين‬‫عنصر‬‫وارد‬‫شده‬‫در‬،‫آن‬‫اولین‬‫عنصري‬‫است‬‫که‬‫از‬‫آن‬‫برداشته‬‫‌شود‬‫ی‬‫م‬.
‫عملیات‬‫در‬‫پشته‬‫و‬‫کاربردهاي‬‫آن‬‫در‬‫فصل‬‫پشته‬‫به‬‫طور‬‫مفصل‬‫بررسی‬‫خواهند‬‫شد‬.
18
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫تمرین‬
19
‫خروجی‬f(1,1)‫را‬‫مشخص‬‫کنید‬.
f(x,0)=f(x+1,0) + f(x+1,1) , if x<3
f(x,1)=2f(x+1,0) + f(x+1,1) , if x<3
f(3,0)=1
f(3,1)=0
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫مثال‬
‫خروجی‬‫زیر‬‫برنامه‬،‫زیر‬‫به‬‫ازای‬‫فراخوانی‬f (1)‫چیست‬‫؟‬
f (n){
if (n==3)
exit( );
else{
n=n+1;
f(n);
cout<<n;
}
}
‌‫بنابراين‬‌‫خروجی‌برابر‬32‌‫خواهد‬‫بود‬‌‌.
20
3
2
)3()2()1( fff 
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫مثال‬
‌‫خروجی‬f(4)‫چه‌می‌باشد؟‬
f (n){
if (n >2)
{
f(n-1);
cout << 'a' ;
cout << 'b' ;
}
}
‫پاسخ‬‌:‌‫خروجی‬abab‫می‌باشد‬.
21
)2()3()4( fff 
a
b
a
b
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫مثال‬
‫خروجی‬‫زیر‬‫برنامه‬،‫زیر‬‫به‬‫ازای‬‫فراخوانی‬f (1,4)‫چیست‬‫؟‬
f (n,m){
if (n==3)
exit( );
else {
n=n+1;
m=m+1;
f(n,m);
cout<<n;
cout<<m;
}
}
‌‫بنابراين‬‌‫خروجی‌برابر‬3625‌‫خواهد‬‫بود‬‌.
22
3
6
2
5
)6,3()5,2()4,1( fff 
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫تمرين‬
‌‫خروجی‬f(4)‫چیست؟‬
f (int x){
if (x)
g(x–1);
cout<<x;
}
g(int y){
if (y)
{
cout<<y+1;
f(y–1);
}
}
23
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫بازگشتی‬ ‫توابع‬ ‫برای‬ ‫بازگشتی‬ ‫رابطه‬
‫يک‬‫رابطه‬‫بازگشتی‬‫براي‬‫تعداد‬‫ضرب‬‫ها‬‫در‬‫تابع‬‫فاکتوريل‬‫بنويسید‬.
fact (n){
if (n==0) return 1;
else return n*fact(n-1);
}
‫حل‬:
‫براي‬‫يک‬n‫معین‬‫تعداد‬‫ضرب‬‫هايی‬‫که‬‫ان‬‫ج‬‫ام‬‫می‬‫شود‬‫برابر‬‫است‬‫با‬‫تعداد‬‫ضرب‬‫هاي‬‫انجام‬‫شده‬‫در‬‫فراخوانی‬(n-1)‫به‬‫اضافه‬‫عمل‬
‫ضرب‬n‫در‬fact(n-1).‫بنابراين‬‫اگر‬‫تعداد‬‫ضرب‬‫هاي‬‫انجام‬‫شده‬‫براي‬‫يک‬‫مقدار‬‫معین‬n‫را‬‫با‬T(n)‫نمايش‬،‫دهیم‬‫داريم‬:
‫وقتی‬n=0‫باشد‬،‌‫هیچ‌ضربی‌صورت‌نمی‬‫گیرد‬:
24
)1(1)(  nTnT 0)0( T
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫شطرنجی‬ ‫صفحه‬ ‫در‬ ‫حرکت‬
25
‫در‬‫صفحه‬‫شطرنجی‬‫زير‬‫می‬‫خواهیم‬‫از‬‫نقطه‬A‫به‬‫نقطه‬B‫برويم‬.‫حرکت‬‫هاي‬‫مجاز‬‫فقط‬‫به‬‫سمت‬‫راست‬‫يا‬‫باال‬‫می‬‫باشد‬.
‫يک‬‫رابطه‬‫بازگشتی‬‫براي‬T(n,m)(‫تعداد‬‫مسیرهاي‬‫ممکن‬‫از‬A‫به‬B)‫بنويسید‬.
‫جواب‬‫اين‬‫رابطه‬‫بازگشتی‬‫برابر‬‫است‬‫با‬:
)m,1n(T)1m,n(T)m,n(T 
1),0( mT
1)0,( nT





 
m
nm
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫مثال‬
26
‫اگر‬T(n)‫تعداد‬‫ستاره‬‫هاي‬‫چاپ‬‫شده‬‫توسط‬f(n)،‫باشد‬‫رابطه‬‫بازگشتی‬T(n)‫را‬‫مشخص‬‫کنید‬.
f (n){
if (n>=2)
{
f (n-1);
f (n-1);
f (n-2);
cout<<"*";
}
}
0)1(
0)0(
1)2()1()1()(



T
T
nTnTnTnT‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫هانوی‬ ‫برج‬ ‫مسئله‬ ‫برای‬ ‫بازگشتی‬ ‫رابطه‬
27
‌‫اگر‌به‌تابع‌برج‌هانوي‌نگاه‌کنیم،‌مشاهده‌می‌شود‌که‌تابع‌دو‌بار‌خودش‌را‌فراخوانی‬‌‫می‬‫کند‬:
‫جواب‌اين‌رابطه‌برابر‌است‌با‬:
1)1(2)(  nTnT
12)(  n
nT
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫تمرین‬
28
‫برای‬‫هر‬‫یک‬‫از‬‫مسئله‬‫های‬‫زیر‬‫یک‬‫رابطه‬‫بازگشتی‬‫بنویسید‬.
(1)‫تعداد‬‫دنباله‬‫هاي‬0‫و‬1‫به‬‫طول‬n‫که‬‫هیچ‬‫دو‬‫صفر‬‫متوالی‬‫ندارند‬.
(2)‫تعداد‬‫روش‬‫هاي‬‫فرش‬‫کردن‬‫يک‬‫صفحه‬‫شطرنجی‬‫با‬‫اندازه‬‫ي‬‫با‬‫موزايیک‬‫هاي‬
(3)‫فرض‬‫کنید‬‫کدي‬‫سه‬‫تايی‬‫شامل‬‫ارقام‬0‫و‬1‫و‬2‫با‬‫طول‬n‫زمانی‬‫معتبر‬‫است‬‫که‬‫تعداد‬‫صفرهاي‬‫ظاهر‬‫شده‬‫در‬‫آن‬‫زوج‬‫باشد‬.
‫رابطه‬‫بازگشتی‬‫بنويسیدکه‬‫تعداد‬‫کدهاي‬‫به‬‫طول‬n‫که‬‫معتبر‬‫هستند‬‫را‬‫محاسبه‬‫کند‬.
12 n2
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫بازگشتی‬ ‫های‬ ‫رابطه‬ ‫حل‬ ‫های‬ ‫روش‬
29
‫رابطه‬‫های‬‫بازگشتی‬‫را‬‫می‬‫توان‬‫به‬‫روش‬‫های‬‫زیر‬‫حل‬‫کرد‬:
1-‫حدس‬
2-‫تکرار‬‫با‬‫جايگذاري‬
3-‫قضیه‬‫اصلی‬
4-‫درخت‬‫بازگشت‬
5-‫روش‬‫هاي‬‫حل‬‫رابطه‬‫هاي‬‫بازگشتی‬‫همگن‬‫و‬‫ناهمگن‬
‫این‬‫روش‬‫ها‬‫در‬‫درس‬‫تحلیل‬‫و‬‫طراحی‬‫الگوریتم‬‫بررسی‬‫می‬‫شود‬.
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
30
‫فرادرس‬ ‫در‬ ‫شده‬ ‫مطرح‬ ‫نکات‬ ‫مبنای‬ ‫بر‬ ‫ها‬ ‫اسالید‬ ‫این‬
«‫ها‬ ‫داده‬ ‫ساختمان‬ ‫های‬ ‫فرادرس‬ ‫مجموعه‬»
‫است‬ ‫شده‬ ‫تهیه‬.
‫به‬ ‫آموزش‬ ‫این‬ ‫مورد‬ ‫در‬ ‫بیشتر‬ ‫اطالعات‬ ‫کسب‬ ‫برای‬‫مراجعه‬ ‫زیر‬ ‫لینک‬‫نمایید‬.
faradars.org/fvds9402
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org

More Related Content

What's hot

Exercices corrigés applications linéaires-djeddi kamel
Exercices corrigés applications linéaires-djeddi kamelExercices corrigés applications linéaires-djeddi kamel
Exercices corrigés applications linéaires-djeddi kamel
Kamel Djeddi
 

What's hot (20)

آموزش روش تقسیم و حل در طراحی الگوریتم (مرور – تست کنکور ارشد)
آموزش روش تقسیم و حل در طراحی الگوریتم (مرور – تست کنکور ارشد)آموزش روش تقسیم و حل در طراحی الگوریتم (مرور – تست کنکور ارشد)
آموزش روش تقسیم و حل در طراحی الگوریتم (مرور – تست کنکور ارشد)
 
Exercices corrigés applications linéaires-djeddi kamel
Exercices corrigés applications linéaires-djeddi kamelExercices corrigés applications linéaires-djeddi kamel
Exercices corrigés applications linéaires-djeddi kamel
 
Graph traversal-BFS & DFS
Graph traversal-BFS & DFSGraph traversal-BFS & DFS
Graph traversal-BFS & DFS
 
PRIM’S AND KRUSKAL’S ALGORITHM
PRIM’S AND KRUSKAL’S  ALGORITHMPRIM’S AND KRUSKAL’S  ALGORITHM
PRIM’S AND KRUSKAL’S ALGORITHM
 
DFS & BFS Graph
DFS & BFS GraphDFS & BFS Graph
DFS & BFS Graph
 
MS Sql Server: Joining Databases
MS Sql Server: Joining DatabasesMS Sql Server: Joining Databases
MS Sql Server: Joining Databases
 
Optimal binary search tree dynamic programming
Optimal binary search tree   dynamic programmingOptimal binary search tree   dynamic programming
Optimal binary search tree dynamic programming
 
Breadth first search and depth first search
Breadth first search and  depth first searchBreadth first search and  depth first search
Breadth first search and depth first search
 
Master method
Master method Master method
Master method
 
Infix prefix postfix
Infix prefix postfixInfix prefix postfix
Infix prefix postfix
 
Les03 Single Row Function
Les03 Single Row FunctionLes03 Single Row Function
Les03 Single Row Function
 
Recursion(Advanced data structure)
Recursion(Advanced data structure)Recursion(Advanced data structure)
Recursion(Advanced data structure)
 
Regex cheatsheet
Regex cheatsheetRegex cheatsheet
Regex cheatsheet
 
DFS and BFS
DFS and BFSDFS and BFS
DFS and BFS
 
SQL Server Learning Drive
SQL Server Learning Drive SQL Server Learning Drive
SQL Server Learning Drive
 
2-3 Tree
2-3 Tree2-3 Tree
2-3 Tree
 
Algorithm: Quick-Sort
Algorithm: Quick-SortAlgorithm: Quick-Sort
Algorithm: Quick-Sort
 
Network flow problems
Network flow problemsNetwork flow problems
Network flow problems
 
3.9 external sorting
3.9 external sorting3.9 external sorting
3.9 external sorting
 
B tree
B treeB tree
B tree
 

Viewers also liked

هوش مصنوعی - شبکه عصبی
هوش مصنوعی - شبکه عصبیهوش مصنوعی - شبکه عصبی
هوش مصنوعی - شبکه عصبی
Ali Ghaeni
 

Viewers also liked (13)

آموزش ساختمان داده ها - بخش پنجم
آموزش ساختمان داده ها - بخش پنجمآموزش ساختمان داده ها - بخش پنجم
آموزش ساختمان داده ها - بخش پنجم
 
آموزش ساختمان داده ها - بخش چهارم
آموزش ساختمان داده ها - بخش چهارمآموزش ساختمان داده ها - بخش چهارم
آموزش ساختمان داده ها - بخش چهارم
 
فیلم آموزشی رایگان الگوریتم ژنتیک حل مساله tsp در متلب
فیلم آموزشی رایگان الگوریتم ژنتیک حل مساله tsp در متلبفیلم آموزشی رایگان الگوریتم ژنتیک حل مساله tsp در متلب
فیلم آموزشی رایگان الگوریتم ژنتیک حل مساله tsp در متلب
 
هوش مصنوعی - فصل سوم
هوش مصنوعی - فصل سومهوش مصنوعی - فصل سوم
هوش مصنوعی - فصل سوم
 
هوش مصنوعی - شبکه عصبی
هوش مصنوعی - شبکه عصبیهوش مصنوعی - شبکه عصبی
هوش مصنوعی - شبکه عصبی
 
آموزش ساختمان داده ها - بخش هفتم
آموزش ساختمان داده ها - بخش هفتمآموزش ساختمان داده ها - بخش هفتم
آموزش ساختمان داده ها - بخش هفتم
 
آموزش سیستم های عامل - بخش پنجم
آموزش سیستم های عامل - بخش پنجمآموزش سیستم های عامل - بخش پنجم
آموزش سیستم های عامل - بخش پنجم
 
(MATLAB) شبکه‌های عصبی و استفاده از جعبه ابزار آن در محيط متلب
(MATLAB) شبکه‌های عصبی و استفاده از جعبه ابزار آن در محيط متلب(MATLAB) شبکه‌های عصبی و استفاده از جعبه ابزار آن در محيط متلب
(MATLAB) شبکه‌های عصبی و استفاده از جعبه ابزار آن در محيط متلب
 
آموزش شبیه سازی مدارات الکتریکی با OrCAD
آموزش شبیه سازی مدارات الکتریکی با OrCADآموزش شبیه سازی مدارات الکتریکی با OrCAD
آموزش شبیه سازی مدارات الکتریکی با OrCAD
 
شبکه های عصبی مصنوعی
شبکه های عصبی مصنوعیشبکه های عصبی مصنوعی
شبکه های عصبی مصنوعی
 
دانلود رایگان کد فایل آموزشی شبکه های عصبی مصنوعی Artificial Neural Networ...
دانلود رایگان کد فایل آموزشی شبکه های عصبی مصنوعی    Artificial Neural Networ...دانلود رایگان کد فایل آموزشی شبکه های عصبی مصنوعی    Artificial Neural Networ...
دانلود رایگان کد فایل آموزشی شبکه های عصبی مصنوعی Artificial Neural Networ...
 
Chainer v2 alpha
Chainer v2 alphaChainer v2 alpha
Chainer v2 alpha
 
TensorFlow を使った 機械学習ことはじめ (GDG京都 機械学習勉強会)
TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)
TensorFlow を使った 機械学習ことはじめ (GDG京都 機械学習勉強会)
 

Similar to آموزش ساختمان داده ها - بخش دوم

Similar to آموزش ساختمان داده ها - بخش دوم (20)

آموزش ساختمان داده ها - بخش نهم
آموزش ساختمان داده ها - بخش نهمآموزش ساختمان داده ها - بخش نهم
آموزش ساختمان داده ها - بخش نهم
 
آموزش ذخیره و بازیابی اطلاعات - درس هشتم
آموزش ذخیره و بازیابی اطلاعات - درس هشتمآموزش ذخیره و بازیابی اطلاعات - درس هشتم
آموزش ذخیره و بازیابی اطلاعات - درس هشتم
 
آموزش ساختمان داده ها - بخش ششم
آموزش ساختمان داده ها - بخش ششمآموزش ساختمان داده ها - بخش ششم
آموزش ساختمان داده ها - بخش ششم
 
آموزش پایگاه داده ها - بخش یکم
آموزش پایگاه داده ها - بخش یکمآموزش پایگاه داده ها - بخش یکم
آموزش پایگاه داده ها - بخش یکم
 
آموزش ذخیره و بازیابی اطلاعات - درس نهم
آموزش ذخیره و بازیابی اطلاعات - درس نهمآموزش ذخیره و بازیابی اطلاعات - درس نهم
آموزش ذخیره و بازیابی اطلاعات - درس نهم
 
آموزش پایگاه داده ها - بخش یکم
آموزش پایگاه داده ها - بخش یکمآموزش پایگاه داده ها - بخش یکم
آموزش پایگاه داده ها - بخش یکم
 
آموزش پایگاه داده ها - بخش یکم
آموزش پایگاه داده ها - بخش یکمآموزش پایگاه داده ها - بخش یکم
آموزش پایگاه داده ها - بخش یکم
 
آموزش پایگاه داده ها (مرور – تست کنکور ارشد)
آموزش پایگاه داده ها (مرور – تست کنکور ارشد)آموزش پایگاه داده ها (مرور – تست کنکور ارشد)
آموزش پایگاه داده ها (مرور – تست کنکور ارشد)
 
آموزش سیستم های عامل - بخش ششم
آموزش سیستم های عامل - بخش ششمآموزش سیستم های عامل - بخش ششم
آموزش سیستم های عامل - بخش ششم
 
آموزش ذخیره و بازیابی اطلاعات - درس هفتم
آموزش ذخیره و بازیابی اطلاعات - درس هفتمآموزش ذخیره و بازیابی اطلاعات - درس هفتم
آموزش ذخیره و بازیابی اطلاعات - درس هفتم
 
آموزش ذخیره و بازیابی اطلاعات - درس سوم
آموزش ذخیره و بازیابی اطلاعات - درس سومآموزش ذخیره و بازیابی اطلاعات - درس سوم
آموزش ذخیره و بازیابی اطلاعات - درس سوم
 
آموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش چهارم
آموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش چهارمآموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش چهارم
آموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش چهارم
 
آموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش سوم
آموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش سومآموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش سوم
آموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش سوم
 
آموزش ذخیره و بازیابی اطلاعات - درس دهم
آموزش ذخیره و بازیابی اطلاعات - درس دهمآموزش ذخیره و بازیابی اطلاعات - درس دهم
آموزش ذخیره و بازیابی اطلاعات - درس دهم
 
آموزش نظریه زبان ها و ماشین ها - بخش یکم
آموزش نظریه زبان ها و ماشین ها - بخش یکمآموزش نظریه زبان ها و ماشین ها - بخش یکم
آموزش نظریه زبان ها و ماشین ها - بخش یکم
 
آموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش دوم
آموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش دومآموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش دوم
آموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش دوم
 
آموزش کنترلرهای تطبیقی خود تنظیم با متلب بخش دوم (الف)
آموزش کنترلرهای تطبیقی خود تنظیم با متلب بخش دوم (الف)آموزش کنترلرهای تطبیقی خود تنظیم با متلب بخش دوم (الف)
آموزش کنترلرهای تطبیقی خود تنظیم با متلب بخش دوم (الف)
 
آموزش ساختمان داده ها - بخش هشتم
آموزش ساختمان داده ها - بخش هشتمآموزش ساختمان داده ها - بخش هشتم
آموزش ساختمان داده ها - بخش هشتم
 
آموزش سیستم های عامل - بخش دهم
آموزش سیستم های عامل - بخش دهمآموزش سیستم های عامل - بخش دهم
آموزش سیستم های عامل - بخش دهم
 
آموزش پایگاه داده ها - بخش یکم
آموزش پایگاه داده ها - بخش یکمآموزش پایگاه داده ها - بخش یکم
آموزش پایگاه داده ها - بخش یکم
 

More from faradars

More from faradars (20)

آموزش فیزیک الکتریسیته - فصل ششم تا نهم
آموزش فیزیک الکتریسیته - فصل ششم تا نهمآموزش فیزیک الکتریسیته - فصل ششم تا نهم
آموزش فیزیک الکتریسیته - فصل ششم تا نهم
 
آموزش فیزیک الکتریسیته - فصل یکم تا پنجم
آموزش فیزیک الکتریسیته - فصل یکم تا پنجمآموزش فیزیک الکتریسیته - فصل یکم تا پنجم
آموزش فیزیک الکتریسیته - فصل یکم تا پنجم
 
آموزش ذخیره و بازیابی اطلاعات - درس ششم
آموزش ذخیره و بازیابی اطلاعات - درس ششمآموزش ذخیره و بازیابی اطلاعات - درس ششم
آموزش ذخیره و بازیابی اطلاعات - درس ششم
 
آموزش ذخیره و بازیابی اطلاعات - درس پنجم
آموزش ذخیره و بازیابی اطلاعات - درس پنجمآموزش ذخیره و بازیابی اطلاعات - درس پنجم
آموزش ذخیره و بازیابی اطلاعات - درس پنجم
 
آموزش ذخیره و بازیابی اطلاعات - درس چهارم
آموزش ذخیره و بازیابی اطلاعات - درس چهارمآموزش ذخیره و بازیابی اطلاعات - درس چهارم
آموزش ذخیره و بازیابی اطلاعات - درس چهارم
 
آموزش ذخیره و بازیابی اطلاعات - درس دوم
آموزش ذخیره و بازیابی اطلاعات - درس دومآموزش ذخیره و بازیابی اطلاعات - درس دوم
آموزش ذخیره و بازیابی اطلاعات - درس دوم
 
آموزش ذخیره و بازیابی اطلاعات - درس یکم
آموزش ذخیره و بازیابی اطلاعات - درس یکمآموزش ذخیره و بازیابی اطلاعات - درس یکم
آموزش ذخیره و بازیابی اطلاعات - درس یکم
 
آموزش ترمودینامیک ۲ بخش سوم
آموزش ترمودینامیک ۲ بخش سومآموزش ترمودینامیک ۲ بخش سوم
آموزش ترمودینامیک ۲ بخش سوم
 
آموزش ترمودینامیک ۲ بخش هشتم
آموزش ترمودینامیک ۲ بخش هشتمآموزش ترمودینامیک ۲ بخش هشتم
آموزش ترمودینامیک ۲ بخش هشتم
 
آموزش ترمودینامیک ۲ بخش دوم
آموزش ترمودینامیک ۲ بخش دومآموزش ترمودینامیک ۲ بخش دوم
آموزش ترمودینامیک ۲ بخش دوم
 
آموزش ترمودینامیک ۲ بخش هفتم
آموزش ترمودینامیک ۲ بخش هفتمآموزش ترمودینامیک ۲ بخش هفتم
آموزش ترمودینامیک ۲ بخش هفتم
 
آموزش ترمودینامیک ۲ بخش ششم
آموزش ترمودینامیک ۲ بخش ششمآموزش ترمودینامیک ۲ بخش ششم
آموزش ترمودینامیک ۲ بخش ششم
 
آموزش ترمودینامیک ۲ بخش اول
آموزش ترمودینامیک ۲ بخش اولآموزش ترمودینامیک ۲ بخش اول
آموزش ترمودینامیک ۲ بخش اول
 
آموزش ترمودینامیک ۲ بخش پنجم
آموزش ترمودینامیک ۲ بخش پنجمآموزش ترمودینامیک ۲ بخش پنجم
آموزش ترمودینامیک ۲ بخش پنجم
 
آموزش ترمودینامیک ۲ بخش چهارم
آموزش ترمودینامیک ۲ بخش چهارمآموزش ترمودینامیک ۲ بخش چهارم
آموزش ترمودینامیک ۲ بخش چهارم
 
آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...
آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...
آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...
 
آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...
آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...
آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...
 
آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...
آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...
آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...
 
آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...
آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...
آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...
 
آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...
آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...
آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...
 

آموزش ساختمان داده ها - بخش دوم