홈>
안녕하세요.
내 문제를 당신과 나누고 싶습니다. 나는 재귀 적 인 방법을 연습하고 있으며 한 곳의 운동을 발견했습니다. 연습은 모든 짝수 자리에 0을 추가하는 재귀 방법을 만드는 것입니다. 누군가 아이디어가 있다면 여기에서 공유하면 좋을 것입니다.
<시간>코드는 다음과 같습니다.
public static String adding0AfterEvenNumber(int number) {
String s = String.valueOf(number);
String result;
if (number < 10 && number % 2 == 0) {
return s + 0;
}
}
코드의 주요 부분이 누락되었지만 실제로 코드를 만드는 방법에 대한 아이디어가 없습니다. 미리 감사드립니다
<시간>- 답변 # 1
- 답변 # 2
다음과 같이 되풀이 할 것입니다 :
public static String adding0AfterEvenNumber(int number) { return ((number >= 10) ? adding0AfterEvenNumber(number / 10) : "") + String.valueOf(number % 10) + ((number % 2 == 0) ? "0" : ""); }
여기 사용해보십시오.
<script src="//repl.it/embed/JDEV/1.js"></script>
첫 번째 부분은 터미널 조건으로, 한 자리 숫자가 있으면 아무 것도 추가하지 않으며, 마지막 자리를 제거한 후 재귀를 호출합니다.
(number > 10) ? adding0AfterEvenNumber(number / 10) : "")
두 번째 부분은 짝수 인 경우 마지막 자리에 0을 추가합니다.
String.valueOf(number % 10) + ((number % 2 == 0) ? "0" : "")
- 답변 # 3
짝수는 짝수 위치에없는 짝수 값을 가진 숫자라는 것을 알고 있습니다. 다음 함수는 값이 포함 된 문자열을 반환해야하지만 꼬리 값만큼 머리 값을 이동하면 정수를 반환 할 수 있습니다.
public String add0onEven(int number, int initPos, int endPos) { if (initPos == endPos - 1) { int digit = (number / (int) Math.pow(10, initPos)) % 10; if (digit % 2 == 1) { return digit + "0"; } else { return "" + digit; } } else if (endPos - initPos < 1) { return ""; } else { int sepIdx = (endPos - initPos) / 2 + initPos; String tail = add0onEven(number, initPos, sepIdx); String head = add0onEven(number, sepIdx, endPos); return head + tail; } }
다음과 같이 메소드를 호출 할 수 있습니다 :
add0onEven(1234567, 0, 7)
이 호출을 위해 얻은 출력 :
10230450670
이 솔루션은 메모리에 미치는 영향이 적기 때문에 하위 문자열 솔루션보다 우수하다고 생각합니다 (각 하위 문자열 호출마다 새 문자열을 만들 필요가 없습니다). 또한 재귀에 더 적합한 Divide and Conquer 접근 방식을 따릅니다.
관련 자료
- 파이썬에서 정규식 (refindall)을 사용하여 텍스트에서 15 자리 문자열 추출
- python - 재귀를 사용하여 문자열에서 두 글자 바꾸기
- 두 줄마다 셀레늄 파이썬에 쉼표를 추가하는 방법은 무엇입니까?
- javascript - 빌드 후 외부 Vue 구성 요소 사용
- java - 재귀를 사용하는 부분 문자열
- C의 배열을 사용하여 정수 입력을 숫자로 변환
- artificial intelligence - 프롤로그에서 재귀를 사용하여 직각 삼각형을 그리는 방법은 무엇입니까?
- javascript - appendChild 사용 후 부모 CSS 재정의
- python - regex를 사용하여 "사용자"다음에 모든 사용자 가져 오기 -
- python - csvDictReader ()를 사용한 후 소스 순서대로 데이터를 정렬하는 방법은 무엇입니까?
- R에서 tidyverse를 사용하여 요약 한 후 열 유지
- python - 파워 세트 예제를 사용한 재귀 이해
- python - 정규 표현식을 사용하여 특정 단어 바로 뒤의 약어 찾기
- javascript - jquery를 사용하여 페이지 리디렉션 후 입력 데이터 검색
- javascript - 데이터베이스에서 문서 조회 후 생성자에 정의 된 메소드 사용
- Mysql + PHP, ASC 이후 5 데이터마다 DESC?
- sql - Bigquery에서 숫자가 포함 된 모든 단어 뒤에 쉼표를 추가합니다
이 코드를 고려하십시오 (줄 주석)
출력
결과 : 1203405607