홈>
Scala에서 재귀 함수를 작성하여 목록의 첫 번째 요소와 마지막 요소를 반환하려고합니다 (쌍).
.head
만 사용하고 싶습니다
그리고
.tail
match
없이
간단한 (꼬리가 아닌) 재귀를 사용합니다 (추가 기능을 정의하지 않고). 가능합니까?
이 코드를 사용하여 찾을 수있는 마지막 요소 :
def foo(x: List[Int]): (Int) = {
if (x.tail.isEmpty) (x.head)
else foo(x.tail)
}
첫 번째 요소와 마지막 요소
(Int, Int)
와의 쌍을 반환하고 싶습니다
. 매개 변수는
(x: List[Int])
입니다
. 내가
head
를 통과하면 쉽습니다
매개 변수로 사용하지만 수행하지 않고도 가능합니까?
- 답변 # 1
- 답변 # 2
다른 접근법
def headTail(l:List[Int]) : (Int, Int) = { if(l.isEmpty) (-1, -1) else if(l.tail == List()) (l.head, -1) else if(l.tail.tail.isEmpty) (l.head, l.tail.head) else headTail(l.head :: l.tail.tail) //eliminates second element for every iteration }
관련 자료
- css - 자식 요소에` - not (: last-child)`를 사용하면 실제 마지막 요소를 건너 뛰지 않습니다
- c ++ - 첫 번째와 마지막 요소가 동일한 메모리 주소를 갖는 두 개의 배열이 있습니다
- javascript - jquery 클릭 기능을 사용할 때 다른 요소 재설정을 기본값으로 수정하는 방법
- c# - 배열의 첫 번째와 마지막 요소에 대한 루프를 건너 뛰고 상수 값으로 설정하려면 어떻게해야합니까?
- 파이썬에서 정규식을 사용하여 첫 번째 대괄호 콘텐츠 검색
- javascript - 소품을 사용하여 반응 js 요소를 만드는 방법은 무엇입니까?
- html - PHP에서 DOM을 사용하여 요소의 텍스트를 가져 오지만 오류를 반환합니다
- javascript - 인형과 함께 x/y 좌표를 사용하여 요소를 클릭하는 방법은 무엇입니까?
- python - 목록에서 현재 요소보다 큰 모든 요소 찾기
- regex - 정규식을 사용하여 방정식의 절편 찾기
- 프롤로그의 중첩 된 목록 내에서 요소의 위치 찾기
- arrays - char 포인터에 대한 포인터의 첫 번째 요소를 인쇄하면 문자열의 내용이 인쇄되는 이유는 무엇입니까?
- r - purrr - : keep을 사용하여 na가있는 목록 요소 이름 추출
- Selenium 및 Python을 사용하여 요소의 href 속성을 가져 오는 방법
- javascript - 첫 번째 요소를 나머지 요소와 비교하고 두 번째 요소를 나머지 요소 및 동일한 반복과 어떻게 비교할 수 있습니까?
- python - Selenium을 사용하여 클릭 할 수있는 요소의 href 속성을 얻을 수없는 이유
- android - 어댑터를 사용할 때 클릭해야하는 요소
- python - 셀레늄을 사용하여 ID, 값 및 유형이없는 요소 (버튼)를 찾는 방법은 무엇입니까?
- query performance - sqlite - 정수 튜플로 구성된 테이블에서 다음 또는 이전 요소 찾기
- swift - 애니메이션을 사용하여 이동하는 동안 요소의 오프셋 가져 오기
관련 질문
- python : 각 하위 목록의 요소 크기 합계가 N보다 작은 문자열 목록을 문자열 목록으로 분할하는 방법이 있습니까?
- python : 6개의 for 루프 없이 6개의 섹션을 끝에서 끝까지 결합하는 가장 효율적인 방법
- python : 목록 파이썬 질문에서 가장 작은 값 제거
- java : LinkedList 반복
- 다른 함수에서 함수의 입력 목록 호출
- python : 각 행과 열의 합을 알고 표 채우기
- list : 파일 경로 목록에서 Scala의 리소스 스트림을 추가하는 방법은 무엇입니까?
- Scala에서 List의 참조를 찾는 방법
- list : 스칼라에서 문자열 목록을 필터링하는 함수
- list : 너무 많은 정보
꼬리에는 안쪽의 재귀 함수를 사용할 수 있고 머리에는 바깥 쪽 함수를 사용할 수 있습니다.
그러나 이것이 여전히 운동의 정신에 있는지 여부는 또 다른 질문입니다.
다음은 매우 비효율적 인 솔루션입니다.
헤드를 별도의 매개 변수로 전달하지 않고 2보다 긴 경우 나머지 나머지 헤드의 헤드에 다시 추가합니다.
빈 케이스에 대한 의미있는 리턴을 위해 나는 좋은 생각이 없었다. 일반적으로 튜플의 반환 옵션은 방법입니다.