Получение рекурсивного определения от спецификации функций
-
28-09-2020 - |
Вопрос
Учитывая эту спецификацию функции, где название xs
связан с списком, #
обозначает его кардинальность и генеракодицетагCode - это оператор .
...
$$ \ leq (\ sum i: 0 \ leq i <\ #xs: xs.i * (i + 1) \ vant) $$ < / P >.
Мне нужно получить рекурсивную функцию с использованием индукции.
Базовый чехол: list index
\ begin {align} \ Left (\ sum i: 0 \ leq i <\ # []: xs.i * (i + 1) \ верно) && \ text {((текстовая замена - xs бесплатно)} \\ \ Left (\ sum i: 0 \ leq i <0: xs.i * (i + 1) \ верно) && \ text {(def. из #)} \\ \ Left (\ Sum i: false: xs.i * (i + 1) \ верно) && \ text {(алгебра)} \\ \ Left (\ sum i: 0 \ leq i <\ #xs: xs.i * (i + 1) \ верно) && \ text {(пустой диапазон)} \ end {align}
Индуктивный чехол: []
\ begin {align} \ Left (\ sum i: 0 \ leq i <\ # (x: xs): (x: xs) .i * (i + 1) \ верно) && \ text {(текстовая замена - xs бесплатный)} \ \ \ левый (\ sum i: 0 \ leq i <1 + \ #xs: (x: xs) .i * (i + 1) \ верно) && \ text {(def. из #)} \ end {align}
Как я могу продолжить отсюда?
Решение
Ваша обозначение и понимание довольно хорошие.
Легче рассмотреть генеракодицетагкод как индуктивный чехол вместо (xs:x)
\ begin {align} \ sum_ {i: \ 0 \ leq i <\ # (xs: x)} & (xs: x) .i * (i + 1) \\ &=sum _ {i: \ 0 \ leq i <\ # xs + 1} (x: xs) .i * (I + 1) \\ &=sum_ {i: \ 0 \ leq i <\ #x} (xs: x) .i * (i + 1) + \ sum_ {i: \ i=# xs} (xs: x) .i * (I + 1) \\ &=sum_ {i: \ 0 \ leq i <\ #x} xs.i * (i + 1) + x * (\ # xs + 1), \\ \ end {align} Где мы предполагаем, что индекс списка начинается с 0.
Если мы обозначим функцию по $ f $ , вышеуказанное равенство становится $$ f (xs: x)= f (xs) + x * (\ # xs + 1), $$ который является рекурсивным шагом рекурсивного определения.
Базовый чехол, как вы указали, это $$ f ([])=sum_ {i: \ 0 \ leq i <0} [] .i * (i + 1)=sum_ {i: \ text { Пустой набор}} []. I * (i + 1)= 0. $$
<Сильные> Упражнения . Вытащите следующую рекурсивую формулу одинаковой функции $ F $ .
$$ f (x: xs)= f (xs) + t (xs) + x, $$
где $$ t (xs)=sum_ {i: \ 0 \ leq i <\ # (xs)} xs.i, $$
Сумма предметов в