Определите функцию, принимающую на вход целое n и возвращающую список, содержащий n элементов, упорядоченных по возрастанию.
1) Список факториалов
2) Список степеней двойки
3) Список треугольных чисел*.
4) Список пирамидальных чисел#.
* n-е треугольное число tn равно количеству одинаковых монет, из которых можно построить равносторонний треугольник, на каждой стороне которого укладывается n монет. Нетрудно убедится, что t1=1 и tn=n+tn-1
# n-е пирамидальное число pn равно количеству одинаковых шаров, из которых можно построить пирамиду с треугольным основанием, на каждой стороне которой укладывается n шаров. Нетрудно убедится, что p1=1 и pn=tn+pn-1
Решение № 1
list6 :: Integer -> [Integer]
Запуск:
Reading file "c:\haskell\Laba21.hs":
Если вы забыли как запускать, то вам сюда: урок № 2 п. 2Решение № 1
list5 :: Integer -> [Integer]
factorial 0 = 1
factorial x = x*factorial(x-1)
list5 0 = [ ]
list5 x = list5 (x-1)++[factorial(x)]
Запуск:
Запуск:
Main> list5 5
[1,2,6,24,120] :: [Integer]
Решение № 2:
stepen 1 = 1
stepen x = 2*stepen(x-1)
list6 0 = [ ]
list6 x = list6 (x-1)++[stepen(x+1)]
Запуск:
Prelude> :load "c:\\haskell\\Laba21.hs"
Main> list6 7
[2,4,8,16,32,64,128] :: [Integer]
Решение № 3:
list7 :: Integer -> [Integer]
piram 1 = 1
piram(x) = x+piram(x-1)
list7 0 = [ ]
list7 x = list7 (x-1)++[piram(x)]
Запуск:
Main> list7 4
[1,3,6,10] :: [Integer]
Решение № 4:
list8 :: Integer -> [Integer]
pir 1 = 1
pir(x) = x+pir(x-1)
p 1 = 1
p x = pir(x) + p(x-1)
list8 0 = [ ]
list8 x = list8 (x-1)++[p(x)]
Запуск:
Main> list8 4
[1,4,10,20] :: [Integer]
Решение № 4:
list8 :: Integer -> [Integer]
pir 1 = 1
pir(x) = x+pir(x-1)
p 1 = 1
p x = pir(x) + p(x-1)
list8 0 = [ ]
list8 x = list8 (x-1)++[p(x)]
Запуск:
Main> list8 4
[1,4,10,20] :: [Integer]