귀속 (一)
21163 단어 귀착 하 다
우 리 는 1) 마지막 열, 그것 의 값 은 N 이라는 것 을 발견 했다.2) 총 개수 = N + 모든 남 은 열의 합.
public int triangle (int c) {return c + getCount (c - 1);} 이상 의 코드 는 잘못 되 었 습 니 다. 재 귀 에는 종료 조건 이 있어 야 합 니 다. 그렇지 않 으 면 무한 재 귀 되 어 프로그램 이 무 너 집 니 다.
1 public class Triangle {
2
3 public int triangle(int c) {
4 if (c > 0) {
5 int i = c - 1;
6 return c + triangle(i);
7 }
8 return 0;
9 }
10
11 public static void main(String[] args) {
12 Triangle t = new Triangle();
13 System.out.println(t.triangle(4));
14 }
15
16 }
인쇄 결과: 10
재 귀 방법의 특징: 1) 자신 을 호출 하 는 2) 자신 을 호출 할 때 이렇게 하 는 것 은 더 작은 문 제 를 해결 하기 위해 서 이다.3) 충분 하고 간단 한 문제 의 차원 이 존재 하 는데 이 층 의 알고리즘 에서 자신 을 호출 하지 않 아 도 직접 풀 수 있 고 결 과 를 되 돌려 줄 수 있다.
변위 문자:
1 public class Anagram {
2
3 static int size;
4
5 static char[] arrChar;
6
7 static int count;
8
9 public static void main(String[] args) {
10 String input = "cats";
11 arrChar = input.toCharArray();
12 size = arrChar.length;
13 doAnagram(size);
14 }
15
16 public static void doAnagram(int newSize) {
17 if (newSize == 1) {
18 return;
19 }
20 for (int i = 0; i < newSize; i++) {
21 doAnagram(newSize - 1);
22 if (newSize == 2)
23 display();
24 rotate(newSize);
25 }
26 }
27
28 public static void display() {
29 System.out.print(++count + " : ");
30 for (int i = 0; i < size; i++) {
31 System.out.print(arrChar[i]);
32 }
33 if (count % 6 == 0) {
34 System.out.println();
35 }
36 else {
37 System.out.print("\t");
38 }
39 }
40
41 public static void rotate(int newSize) {
42 int j;
43 int position = size - newSize;
44 char temp = arrChar[position];
45 for (j = position + 1; j < size; j++) {
46 arrChar[j - 1] = arrChar[j];
47 }
48 arrChar[j - 1] = temp;
49 }
50
51 }
인쇄 결과: 1: cats 2 : cast 3 : ctsa 4 : ctas 5 : csat 6 : csta 7 : atsc 8 : atcs 9 : asct 10 : astc 11 : acts 12 : acst13 : tsca 14 : tsac 15 : tcas 16 : tcsa 17 : tasc 18 : tacs 19 : scat 20 : scta 21 : satc 22 : sact 23 : stca 24 : stac
재 귀적 2 분 검색: 재 귀적 2 분 검색 과 비 재 귀적 2 분 검색 역시 큰 O 효율 입 니 다. O (logN), 재 귀적 인 2 분 검색 은 간결 하지만 속도 가 느 릴 수 있 습 니 다.
1 public class OrderArray {
2
3 private long[] array;
4
5 private int maxLength;
6
7 public OrderArray(int size) {
8 array = new long[size];
9 maxLength = 0;
10 }
11
12 // , 。
13 public void insert(long l) {
14 int i;
15 for (i = 0; i < maxLength; i++) {
16 if (array[i] > l) {
17 break;
18 }
19 }
20 for (int j = maxLength; j > i; j--) {
21 array[j] = array[j - 1];
22 }
23 array[i] = l;
24 maxLength++;
25 }
26
27 //
28 public int find(long key) {
29 int lower = 0;
30 int upper = maxLength - 1;
31 int index;
32 while (true) {
33 index = (lower + upper) / 2;
34 if (array[index] == key) {
35 return index;
36 }
37 else if (lower > upper) {
38 return -1;
39 }
40 else {
41 if (array[index] < key) {
42 lower = index + 1;
43 }
44 else {
45 upper = index - 1;
46 }
47 }
48 }
49 }
50
51 public int recFind(long key) {
52 return recFind(key, 0, maxLength - 1);
53 }
54
55 //
56 private int recFind(long key, int lower, int upper) {
57 int index = (lower + upper) / 2;
58 if (array[index] == key) {
59 return index;
60 }
61 else if (lower > upper) {
62 return -1;
63 }
64 else {
65 if (array[index] < key)
66 lower = index + 1;
67 else
68 upper = index - 1;
69 return recFind(key, lower, upper);
70 }
71 }
72
73 public void display() {
74 for (int i = 0; i < maxLength; i++) {
75 System.out.println("NO." + (i + 1) + " --> " + array[i]);
76 }
77 }
78
79 }
1 public static void main(String[] args) throws ParseException, InterruptedException {
2 OrderArray array = new OrderArray(100);
3
4 array.insert(49);
5 array.insert(158);
6 array.insert(81);
7 array.insert(93);
8 array.insert(18);
9 array.insert(1);
10 array.insert(9);
11 array.insert(7);
12 array.insert(81);
13 array.insert(669);
14
15 array.display();
16
17 int key = 18;
18 System.out.println(key + " is NO " + (array.recFind(key)+1));
19 }
인쇄 결과: NO. 1 -- > 1NO. 2 -- > 7NO. 3 -- > 9NO. 4 -- > 18NO. 5 -- > 49NO. 6 -- > 81NO. 7 -- > 81NO. 8 -- > 93NO. 9 -- > 158 NO. 10 -- > 66918 is NO 4
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
데이터 구조 학습 노트 1 - 링크 반전 (재 귀 와 비 재 귀)최근 에 데이터 구 조 를 배우 고 필 기 를 했 습 니 다. 생각 이 많 습 니 다. 다음 과 같 습 니 다. 재 귀적 사용 안 함: 재 귀적 사용: 소스 코드 는 링크 반전 - 데이터 구조 참조 박문 에서 유래 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.