필자는 근본적으로 문자열 목록을 단일 문자열로 재귀 적으로 줄이려고하는 코드 부분에서 작업하고 있습니다.재귀 적 비참함 - 입력 문자열 줄이기
다양한 길이의 문자열 배열 (예 : 2-4의 배열 길이)과 일치하는 내부 데이터베이스가 있습니다.
{"The", "dog", "ran", "away"}
그리고 더 예를 들어, 내 데이터베이스는 이러한 방식으로 문자열 배열의 구성 될 수있다 :
예 입력 문자열 배열이 될 것 내가 무엇을 시도하고, 그래서
(length 2) {{"The", "dog"},{"dog", "ran"}, {"ran", "away"}}
(length 3) {{"The", "dog", "ran"}.... and so on
해야 할 일은 재귀 적으로 입력 문자열 배열을 하나의 토큰으로 줄이는 것입니다. 그것을 아래 하나의 토큰 때
1) {"The", "dog", "ran", "away"}
Say that (seq1) = {"The", "dog"} and (seq2) = {"ran", "away"}
2) { (seq1), "ran", "away"}
3) { (seq1), (seq2)}
In my sequence database I know that, for instance, seq3 = {(seq1), (seq2)}
4) { (seq3) }
그래서, 나는 행복 해요와 함수가 끝날 것 : 그래서 이상적으로는이 같은 구문 분석합니다. 나는 그것을 충분히 간단하다고 생각하지만, 이상한 결과를 받고있다
public void Tokenize(Arraylist<T> string_array, int current_size)
{
// retrieve all known sequences of length [current_size] (from global list array)
loc_sequences_by_length = sequences_by_length[current_size-min_size]; // sequences of length 2 are stored in position 0 and so on
// escape cases
if (string_array.Count == 1)
{
// finished successfully
return;
}
else if (string_array.Count < current_size)
{
// checking sequences of greater length than input string, bail
return;
}
else
{
// split input string into chunks of size [current_size] and compare to local database
// of known sequences
// (splitting code works fine)
foreach (comparison)
{
if (match_found)
{
// update input string and recall function to find other matches
string_array[found_array_position] = new_sequence;
string_array.Removerange[found_array_position+1, new_sequence.Length-1];
Tokenize(string_array, current_size)
}
}
}
// ran through unsuccessfully, increment length and try again for new sequence group
current_size++;
if (current_size > MAX_SIZE)
return;
else
Tokenize(string_array, current_size);
}
: 여기
내 현재의 프로그램 로직의 개요입니다. 일반적으로 작동하는 것처럼 보이지만 출력 데이터를 자세히 검토 할 때 몇 가지 문제가 있습니다. 주로, 특정 시점까지 작동하는 것처럼 보입니다. 그 시점에서 내 'curr_size'카운터가 최소값으로 재설정됩니다.따라서 크기가 2, 3, 4로 호출 된 다음 2로 다시 설정됩니다. 내 가정은 미리 설정된 최대 크기까지 실행 한 다음 완전히 보석금을 적용한다는 것입니다.
가능한 한 코드를 단순화하려고 했으므로 일부 간단한 구문 오류가있을 수 있습니다. 독수리 모양의 SO 사용자를 도울 수있는 다른 세부 사항이 있으면 알려 주시면 수정하겠습니다.
3 (''{{는 "", "개"가}, {} "멀리", "실행"})이 이미 하나 개의 그룹 단계 아닌가요? –
진행 상황을 더 잘 반영하도록 편집하겠습니다. – espais
4) {{{ "The"}, { "dog"}}, {{ "ran"}, { "away"}}}을 의미 했습니까? –