6-Topshiriq
1-9 –gacha 1-9 jurnal nomerdagi talabalar uchun
10-18-gacha jurnal nomerdagi talabalar uchun 1-9
19-27- gacha jurnal nomerdagi talabalar uchun 1-9 ketma-ketlikda bajaring
Dasturni rekursiv va oddiy usulda yozing.
100 qavatli bino berilgan. Agar g'isht har qanday kichik qavatdan yiqilib tushmasa va m-qavatdan yiqilayotganda singan bo'lsa, m darajali deb aytamiz. Sizda ikkita g'isht bor. Minimal otish uchun g'ishtning navini(butun,yoriq, siniq navli g’isht) topish kerak.
3D vektor uzunligini hisoblaydigan lenVec uchta argumentli funktsiyani amalga oshiring. Argumentlar vektor oxirining dekart koordinatalarini belgilaydi, uning kelib chiqishi boshida qabul qilinadi. Kvadrat ildizni ajratib olish uchun standart kutubxonada aniqlangan sqrt funktsiyasidan foydalaning.
>lenVec3 2 3 6
Musbat son kiritilsa 1, manfiy son kiritilsa (-1), 0 o'tganida 0 qaytaradigan belgi funktsiyasining bajarilishini yozing.
Agar bo'lsa, unda else
Unga berilgan argumentlar farqi modulini qaytaradigan | - | operatorini amalga oshiring
Ikkita faktorialni hisoblaydigan funktsiyani aniqlang, ya'ni berilgan sondan oshmaydigan va bir xil tenglikka ega bo'lgan tabiiy sonlarning ko'paytmasi. Masalan: 7 !! = 7⋅5⋅3⋅1, 8 !! = 8⋅6⋅4⋅2. Funktsiya argumenti faqat manfiy bo'lmagan qiymatlarni qabul qilishi mumkin deb taxmin qilinadi.
5.
0,1,1,2,3,5,8,13,21, ... Fibonachchi raqamlarining ketma-ketligini birinchi ikkita tugatuvchi qiymatni o'rnatish va keyingi har qanday qiymatni darhol oldingi ikkitasining yig'indisi sifatida aniqlash orqali rekursiv ravishda aniqlash oson:
F0 = 0
F1 = 1
Fn = Fn - 1 + Fn - 2
Haskellda ushbu ta'rif quyidagi funktsiya bilan berilgan:
Fibonachchi 0 = 0
fibonachchi 1 = 1
fibonacci n = fibonacci (n - 1) + fibonacci (n - 2)
Ushbu funktsiya faqat manfiy bo'lmagan sonlar uchun belgilanadi. Biroq, yuqorida keltirilgan ta'rifdan siz Fibonachchi raqamlarini salbiy indekslar bilan hisoblash uchun formulani chiqarishingiz mumkin va ketma-ketlik quyidagicha bo'ladi:
F - 1 = 1, F - 2 = -1,…, F - 10 = -55,…
Fibonachchi funktsiyasining ta'rifini o'zgartiring, shunda u barcha butun sonlar uchun aniqlanadi va salbiy argumentlar uchun belgilangan ketma-ketlikni hosil qiladi.
6. To'g'ridan-to'g'ri rekursiv ta'rifga asoslanib, Fibonachchi sonini hisoblash funktsiyasini amalga oshirish juda samarasiz - funktsiya chaqiruvlari soni argument qiymatining o'sishi bilan beqiyos o'sib boradi. Ghci buyruqni berib, xotirani ishlatilishini va ifodani baholashga sarflangan vaqtni kuzatishga imkon beradi: set + s:
>: set + s
> fibonachchi 30
832040
(8.36 soniya, 298293400 bayt)
Akkumulyator mexanizmidan foydalanib, chiziqli murakkablikka ega bo'lgan yanada samarali dasturni yozishga harakat qiling. Oldingi topshiriqdagi kabi, funktsiya barcha butun sonlar uchun aniqlanishi kerak.
7. Quyidagi takrorlanadigan ketma-ketlik elementlarini topadigan seqA funktsiyasini amalga oshiring
a0 = 1; a1 = 2; a2 = 3; ak + 3 = ak + 2 + ak + 1−2ak.
Samarali echim topishga harakat qiling.
> seqA 301
1276538859311178639666612897162414
8. Berilgan tamsayı sonining yig'indisi va sonini topadigan funktsiyani amalga oshiring.
sum'n'count :: Integer -> (Integer, Integer)
sum'n'count x = aniqlanmagan
> sum'n'count (-39)
(12.2)
9. Tuzilgan trapetsiya usuli yordamida berilgan [a, b] intervalda berilgan f funktsiyasining aniq integralining qiymatini topadigan funktsiyani amalga oshiring. (Bir xil katakchadan foydalaning; 1000 ta chiziq segmenti etarli.)
integratsiya :: (Double -> Double) -> Double -> Double -> Double
integratsiya f a b = aniqlanmagan
> sin pi 0 integratsiyasi
-2.0
Natija -2.0 dan farq qilishi mumkin, lekin 1e-4 dan oshmasligi kerak.
Do'stlaringiz bilan baham: |