More Related Content Similar to آموزش ساختمان داده ها - بخش دوم (20) آموزش ساختمان داده ها - بخش دوم5. ها دادهساختمان
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
6. ها دادهساختمان
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
7. ها دادهساختمان
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
8. ها دادهساختمان
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
9. ها دادهساختمان
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
13. ها دادهساختمان
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
15. ها دادهساختمان
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
16. ها دادهساختمان
faradars.org/fvds9402
ها خرگوش ولد و زاد
16
دریکجزیرهیکجفتخرگوشنرومادهنوزادوجودداردومدلرشدجمعیتخرگوشهابهصورتزیراست:
(1)خرگوشهايکماهپسازتولدبهسنبلوغمیرسند.
(2)دورانبارداييکماهاست.
(3)هنگامیکهخرگوشمادهبهسنبلوغمیرسدحتماباردارمیشود.
(4)خرگوشمادهدرهر،باردارييکخرگوشنرويکخرگوشمادهبهدنیامیآورد.
(5)خرگوشهاهرگزنمیمیرند.
رابطهبازگشتیبنويسیدکهتعدادخرگوشهارادرشروعماهnامنشاندهد؟
سرداﺮﻓ
FaraDars.org
17. ها دادهساختمان
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
18. ها دادهساختمان
faradars.org/fvds9402
کاربردپشتهبازگشتی های برنامه زیر در
تعريفپشته:(stack)
پشتهساختماندادهاياستکهحذفواضافهازبااليآنانجامشودیم.
پشتهراFILOنامندیم،چونآخرينعنصرواردشدهدر،آناولینعنصرياستکهازآنبرداشتهشودیم.
عملیاتدرپشتهوکاربردهايآندرفصلپشتهبهطورمفصلبررسیخواهندشد.
18
سرداﺮﻓ
FaraDars.org
19. ها دادهساختمان
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
24. ها دادهساختمان
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
25. ها دادهساختمان
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
27. ها دادهساختمان
faradars.org/fvds9402
هانوی برج مسئله برای بازگشتی رابطه
27
اگربهتابعبرجهانوينگاهکنیم،مشاهدهمیشودکهتابعدوبارخودشرافراخوانیمیکند:
جواباينرابطهبرابراستبا:
1)1(2)( nTnT
12)( n
nT
سرداﺮﻓ
FaraDars.org
29. ها دادهساختمان
faradars.org/fvds9402
بازگشتی های رابطه حل های روش
29
رابطههایبازگشتیرامیتوانبهروشهایزیرحلکرد:
1-حدس
2-تکرارباجايگذاري
3-قضیهاصلی
4-درختبازگشت
5-روشهايحلرابطههايبازگشتیهمگنوناهمگن
اینروشهادردرستحلیلوطراحیالگوریتمبررسیمیشود.
سرداﺮﻓ
FaraDars.org
30. ها دادهساختمان
faradars.org/fvds9402
30
فرادرس در شده مطرح نکات مبنای بر ها اسالید این
«ها داده ساختمان های فرادرس مجموعه»
است شده تهیه.
به آموزش این مورد در بیشتر اطالعات کسب برایمراجعه زیر لینکنمایید.
faradars.org/fvds9402
سرداﺮﻓ
FaraDars.org