재귀와 재귀란 무엇인가요?
질문 1: 재귀(recursion)와 재귀(recursion)란 무엇입니까? 둘 사이의 이념적 연관성은 무엇입니까? 프로그램 자체를 호출하는 프로그래밍 기술을 재귀라고 합니다. 알고리즘으로서의 재귀는 프로그래밍 언어에서 널리 사용됩니다. 프로세스나 함수에는 정의나 설명에서 자신을 직접 또는 간접적으로 호출하는 방법이 있습니다. 일반적으로 크고 복잡한 문제를 원래 문제와 유사한 작은 문제로 변환하여 해결해야 합니다. 소수의 프로그램만 필요합니다. 문제 해결 과정에서 요구되는 여러 번의 반복 계산을 설명하여 프로그램 코드의 양을 크게 줄입니다.
재귀 알고리즘은 여러 가지 반복 가능한 간단한 연산(규칙)을 사용하여 복잡한 문제를 설명하는 방법입니다. 재귀는 시퀀스 컴퓨터에서 일반적으로 사용되는 알고리즘입니다. 특정 규칙에 따라 시퀀스의 각 항목을 계산합니다. 일반적으로 시퀀스에서 지정된 이미지의 값을 얻기 위해 일부 이전 항목을 계산합니다.
반복은 일반적으로 원하는 목표나 결과에 접근하는 것을 목표로 피드백 프로세스를 반복하는 활동입니다. 프로세스의 각 반복을 "반복"이라고 하며, 각 반복의 결과는 다음 반복의 초기 값으로 사용됩니다.
질문 2: 재귀와 재귀 알고리즘의 차이점은 무엇입니까? 재귀는 자신을 호출하는 함수를 말하며, 재귀는 반복되는 프로세스를 의미합니다.
질문 3: 재귀와 재귀 방법의 차이점은 무엇입니까? 재귀는 자신을 호출하는 것입니다!
재귀는 처음부터 뒤로 밀어내는 것입니다!
질문 4: 재귀와 재귀 알고리즘의 차이점은 무엇입니까? 재귀는 자신을 호출하는 것을 의미합니다!
재귀는 처음부터 뒤로 밀어내는 것입니다!
질문 5: 재귀와 재귀의 차이점은 무엇입니까 1. 재귀: n 척도의 문제를 n-1 척도의 여러 문제로 분해하고 문제 척도가 될 때까지 순차적으로 저하시킵니다. 을 찾을 수 있으면, 저차 척도의 해를 구하고, 척도 n 문제의 해를 찾을 때까지 이를 고차 문제에 대입합니다.
2. 재귀: 낮은 차수의 척도(예: 척도 i, 일반적으로 i=0)로 문제를 구성하고 해를 찾고, 척도 i 1로 문제와 해를 추론하고, 차례로 추론합니다. n 크기의 문제에 대해
3. 재귀에는 역추적과 재귀라는 두 가지 프로세스가 포함됩니다.
가장 좋은 예는 피보나치 수열입니다: 1 1 2 3 5 8 13 21 ... ...
공식으로 요약하면 F(n 1)=F ( n) F(n-1), F(0)=F(1)=1;
이 함수를 재귀적으로 작성할 수 있습니다:
int F(int n) {
if (n 질문 6: 재귀 알고리즘과 재귀 알고리즘의 차이점은 무엇입니까? 재귀는 앞에서 뒤로 밀고 나가는 것이며 재귀에도 역추적 과정이 있습니다
예를 들어주세요 , 순서: 1, 1, 2, 3, 5, 8, 13, 21,...
100번째 항목을 요청하려면 처음 두 항목부터 시작하여 100번째 항목까지 진행해야 합니다. 는 재귀입니다. 둘 사이의 연결 과정은 동일하며 본질적인 차이는 없습니다.
질문 8: 재귀 알고리즘의 재귀와 재귀 알고리즘에 비해 재귀 알고리즘은 스택에 데이터가 들어오고 나가는 과정이 필요하지 않습니다. 경계 값에 더 가까이 이동하고 함수 값을 찾을 때까지 경계에서 직접 시작합니다. 예를 들어 f(n)=n*f(n-1) 연산 중에 재귀적 데이터 흐름 프로세스는 다음과 같습니다. f(3) {f(i)=f(i-1)*i}--gt f(2)--gt f( 0){f(0)=1}--gt ;f(1)--gt;f(2)--f(3){f(3)=6} 그리고 재귀는 다음과 같습니다: f(0 )--gt;f(1)--gt;f( 2)--gt; f(3) 재귀의 효율성이 더 높다는 것을 알 수 있으며 가능하면 재귀를 사용해야 합니다. 기본 알고리즘에서는 재귀를 무시할 수 없으므로 이 두 알고리즘을 이해할 때 특히 주의해야 합니다. 소위 전진 추론 방법은 알려진 조건에서 시작하여 점차적으로 해결해야 할 문제를 계산하는 것입니다. 예를 들어, 피보나치 수열의 함수를 f(n)이라고 하면 f(1)=1, f(2)=1, f(n)=f(n-2) f(n-1)입니다. ) (ngt;=3, n∈N). 그런 다음 우리는 연역을 통해 f(3)=f(1) f(2)=2, f(4)=f(2) f(3)=3... 필요한 해를 얻을 때까지 알 수 있습니다. 소위 역과정은 알려진 문제의 결과로부터 시작하여 반복식을 사용하여 문제의 시작 조건을 점차적으로 계산하는 것으로, 순방향 과정의 역과정을 역과정이라 한다.
질문 9: 재귀 알고리즘이란 무엇입니까? 재귀 알고리즘은 함수가 자신을 지속적으로 호출하여 최종 결과를 얻는 영리하지만 비용이 많이 드는 알고리즘입니다.
예:
하노이 타워의 재귀 알고리즘:
void move(char x, char y){
printf( c --gt; c\n, x, y);
}
void hanoi(int n, 문자 1, 문자 2, 문자 3){
/*두 개의 시트를 사용하여 n개의 디스크를 한 개의 시트에서 세 개의 시트로 이동*/
if(n==1) move(one, three)
else; {
하노이(n-1, 하나, 셋, 둘);
이동(하나, 셋)
하노이(n-1, 둘, 하나, 셋);
}
}
main(){
int n; ( 디스크 수 입력:);
scanf(d,amp;n)
printf(3D 디스크 이동 단계:\n,n); >
hanoi(n,'A','B','C')
}
재귀를 이해하는 방법에 대해 이야기하겠습니다.
우선, 재귀와 같은 기능은 무엇을 하는지 걱정하지 마세요. 퍼지 기능이 무엇인지만 알면 됩니다. 내부에 관계없이 특정 기능을 구현할 수 있는 블랙박스라고 생각하는 것과 같습니다. 먼저 하노이 타워가 어떻게 해결되는지 살펴보겠습니다
먼저 위에서 말했듯이 재귀 함수를 특정 함수의 블랙 박스로 상상해 보세요. void hanoi(int n, char one , char two, char three); 이 재귀 함수의 기능은 작은 위치에서 큰 위치로 배치된 n개의 작은 직사각형을 한 위치에서 두 위치를 거쳐 세 위치로 이동하는 것입니다. 그러면 메인 프로그램이 해결해야 할 문제는 B의 도움을 받아 m개의 하노이 블록을 A에서 C로 이동하는 것입니다. 위에서 언급한 하노이 타워의 기능에 따르면 바보들도 메인 함수에 다음과 같이 쓰는 방법을 알고 있다고 믿습니다. 하노이(m, A, B, C)는 B 코드의 도움으로 A에서 C로 m개의 블록을 이동할 수 있습니다. 그렇죠? 따라서 이 호출에는 hanoi(m,'A','C','B');
다음으로 한노이의 이 기능을 구현하기 위해 한노이 함수가 무엇을 해야 하는지 살펴보겠습니다.
한노이 함수에는 세 줄이 있습니다.
hanoi(n-1, one, three, two)
move(one, three); /p>
hanoi(n-1, two, one, three);
A에서 B로 n 블록을 이동하려는 경우에도 블랙박스의 관점에서 봅니다. to C, 위의 3단계로 나눌 수 있나요?
이 세 부분은 다음과 같습니다. 첫 번째 단계는 마지막 가장 긴 블록을 제외한 n-1개의 블록을 한 위치에서 3개를 거쳐 2개, 즉 A에서 C, B로 이동한 다음 하단 이동 기능을 사용하여 가장 긴 블록을 A에서 C로 직접 이동합니다. 그 후 세 번째 단계에서는 한노 함수 기능을 사용하여 B의 n-1 블록을 A에서 다시 C로 이동합니다. 이 3단계 프로세스는 다음과 같습니다. n 블록을 실행합니다. 하노이 함수가 이 함수를 어떻게 구현하는지 걱정할 필요가 없습니다.
마지막으로 재귀에는 끝이 있습니다. 자, 결말은 작품이 하나밖에 없을 때 하노이의 탑을 어떻게 플레이하는가? 매우 간단합니다. 조각을 C로 옮기면 끝납니다. 따라서 hanoni 함수 끝에 if(n==1)move(one, three); , C 위치로 바로 이동하면 됩니다.) 이러한 조건은 하노인 함수 ngt; = 1... gt;
질문 10: 재귀와 재귀의 차이점은 무엇입니까? 재귀는 재귀 루프입니다. 재귀 또는 루프는 재귀보다 이해하고 사용하기 쉽지만 재귀 알고리즘이 더 빠르게 실행되고 코드가 더 간단합니다. 재귀 알고리즘에도 단점이 있는데, 주로 공간을 많이 소모한다는 점입니다. 수학적으로 말하면 모든 재귀 알고리즘은 재귀(루프) 알고리즘으로 대체될 수 있지만 모든 루프 알고리즘이 재귀로 대체될 수는 없습니다.