재귀를 사용하여 문자열 str1과 str2를 "인터리빙"한 문자열을 인쇄하는 방법을 작성하려고합니다. 즉 str1의 첫 번째 문자 다음에 str2의 첫 번째 문자가오고 str1의 두 번째 문자 다음에 str2의 두 번째 문자가 오는 두 문자열의 문자를 대체해야합니다.재귀를 사용하여 두 문자열 (인터리빙)에서 문자를 교대로 인쇄하십시오.
나는 이것에 대해 갈 것인가?
재귀를 사용하여 문자열 str1과 str2를 "인터리빙"한 문자열을 인쇄하는 방법을 작성하려고합니다. 즉 str1의 첫 번째 문자 다음에 str2의 첫 번째 문자가오고 str1의 두 번째 문자 다음에 str2의 두 번째 문자가 오는 두 문자열의 문자를 대체해야합니다.재귀를 사용하여 두 문자열 (인터리빙)에서 문자를 교대로 인쇄하십시오.
나는 이것에 대해 갈 것인가?
재귀의 일반적인 생각은 어떤 종류의 상수 값을 반환하고 다른 모든 사건은 그 위에 구축 된 종단 위치를 가지고있다.
가 가 가그렇게로서 구현 될 수
f(1) = 1
f(n) = n * f(n-1) for all n > 1
: 특정 경우
def factorial(n):
if n == 1:
return 1;
return n * factorial(n-1)
, 종료 조건은 예를 들면
, 팩토리얼 함수 f(n) = n * (n-1) * (n-2) * ... * 2 * 1
는 다음 종료 상태 종속 기능을 갖는다 두 문자열 중 하나가 비어 있으면 다른 문자열을 끝에 둡니다. 종속 함수는 첫 번째 문자열에서 첫 번째 문자를 가져 와서 다음 수준을 호출하여 해당 문자열의 나머지 부분과 다른 문자열 ()을 전달하지만 반대 순서로는을 대체하여 대체 할 수 있습니다.
def mix (s1, s2):
if s1 == "" return s2
if s2 == "" return s1
return s1.firstChar() + mix (s2, s1.allButFirstChar());
Java에서는 다음과 같이 변환됩니다. 이것이 숙제이고 이것을 사용하면 교육자가이 사이트를 모니터링하지 않는다고 생각하는 것이 어리석은 것이므로 거의 이 실패 할 것이라고 경고하십시오.
public class Demo {
public static String Mix (String s1, String s2) {
if (s1.length() == 0) return s2;
if (s2.length() == 0) return s1;
return s1.substring(0,1) + Mix (s2, s1.substring(1));
}
public static void main(String[] args) {
System.out.println (Mix ("Hello", "There"));
System.out.println (Mix ("Hi", "There"));
System.out.println (Mix ("Hello again", "Pax"));
System.out.println (Mix ("", ""));
System.out.println (Mix ("1111", ""));
System.out.println (Mix ("111", "2"));
System.out.println (Mix ("111", "22"));
System.out.println (Mix ("111", "222"));
System.out.println (Mix ("111", "2222"));
System.out.println (Mix ("11", "2222"));
System.out.println (Mix ("1", "2222"));
System.out.println (Mix ("", "2222"));
}
}
출력 : 재귀 솔루션을 원하는 제외
이HTehlelroe
HTihere
HPealxlo again
1111
1211
12121
121212
1212122
121222
12222
2222
이 작동합니다 :
는public String Interleave(String first, String second)
{
if (first.length() == 0)
return second;
if (second.length() == 0)
return first;
return first.substring(0,1) + second.substring(0,1) +
Interleave(first.substring(1), second.substring(1));
}
이의 codingBat/String-2/mixString
문제입니다.
내 솔루션 Kieveli의 본질적 동일합니다
public String mixString(String a, String b) {
return
a.isEmpty() ? b :
b.isEmpty() ? a :
a.substring(0, 1) + b.substring(0, 1)
+ mixString(a.substring(1), b.substring(1));
}
String s1="12345";
String s2="67890";
char ch1[] = s1.toCharArray();
char ch2 [] = s2.toCharArray();
char[] ch3 = new char[10];
// System.out.println("ch1"+ch1);
for(i=0;i<10;i++)
{
ch3[i*2]=ch1[i];
ch3[i*2+1]=ch2[i];
System.out.println("ttttttttttt");
System.out.println(ch3[i]);
}
가 왜이 작업을 수행 할 수 있습니까? 숙제가 아닌가? – bmargulies