문제

이 기능을 사양,는 이름 xs 바 목록 # 을 나타내고 및티 .list index 운영자...

$$\left(\sum i:0\나는 배경 < \#xs:xs.i*(i+1) ight)$$

해 파생되는 재귀적 기능을 사용하여 유도입니다.

기본 경우: []

\을 시작{맞춤} \left(\sum i:0\나는 배경 < \#[]:xs.i*(i+1)\오른쪽)&& ext{(텍스트 대체-xs 무료입니다)}\\ \left(\sum i:0\나는 배경 < 0:xs.i*(i+1)\오른쪽)&& ext{(Def.의#)}\\ \left(\sum i:False:xs.i*(i+1)\오른쪽)&& ext{(대수학)}\\ \left(\sum i:0\나는 배경 < \#xs:xs.i*(i+1)\오른쪽)&& ext{(빈 범위)} \끝{맞춤}

유도한 경우: (x:xs)

\을 시작{맞춤} \left(\sum i:0\나는 배경 < \#(x:xs):(x:xs).i*(i+1)\오른쪽)&& ext{(텍스트 대체-xs 무료입니다)}\\ \left(\sum i:0\나는 배경 < 1+\#xs:(x:xs).i*(i+1)\오른쪽)&& ext{(Def.의#)} \끝{맞춤}

어떻게 진행할 수 있습니다.

도움이 되었습니까?

해결책

귀하의 표기법과 이해가 매우 좋습니다.

그것을 고려하는 것이 더 쉽 (xs:x) 으로 유도한 경우 대신에 (x:xs)

\을 시작{맞춤} \sum_{i:\0\나는 배경 < \#(xs:x)}&(xs:x)i*(i+1)\\ &=\sum_{i:\0\나는 배경 < \#xs+1}(x:xs).i*(i+1)\\ &=\sum_{i:\0\나는 배경 < \#xs}(xs:x)i*(i+1)+\sum_{i:\i=\#xs}(xs:x)i*(i+1)\\ &=\sum_{i:\0\나는 배경 < \#xs}xs.i*(i+1)+x*(\#xs+1),\\ \끝{맞춤} 우리가 가는 목록 인덱스 시작으로 0.

면 우리는 나타내는 기능 $$f, 위의 평등가 $$f(xs:x)=f(xs)+x*(\#xs+1),$$ 는 재귀적 단계의 재귀적 정의합니다.

기본 경로를 나타입 $$f([])=\sum_{i:\0\나는 배경 < 0}[].i*(i+1)=\sum_{i: ext{빈 집합}}[].i*(i+1)=0.$$


운동.파생을 다음과 같은 재귀적 수식의 동일한 기능 $$f. $$f(x:xs)=f(xs)+t(xs)+x,$$$$t(xs)=\sum_{i:\0\나는 배경 < \#(xs)}xs.나$$ 의 합의 항목 $xs$.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 cs.stackexchange
scroll top