C 언어에서 재귀 적으로 배열을 뒤집는 방법
이 튜토리얼에서는 배열 반전 함수를 재귀적으로 코딩하려고 합니다. 재귀 적 방법은 반복 적 방법에 비해 더 어렵지만 재귀 프로그램은 더 공식적입니다.
우선 재귀의 경우를 정의해야합니다. 먼저 이해하기 위해 반복 메서드의 프로그램을 작성해야 합니다.
이 그림은 i 및 n-i,스팬> 페인팅 길이의 절반에 도달할 때까지 작업이 반복됩니다. 배열의 전반부에서만 작업을 반복해야 하며, 그렇지 않으면 후반부의 요소를 이미 처리된 전반부의 요소로 교체하고 시작 배열로 돌아갑니다.
다음 코드는 배열을 반복 메서드로 바꿉니다.
우선 재귀의 경우를 정의해야합니다. 먼저 이해하기 위해 반복 메서드의 프로그램을 작성해야 합니다.
이 그림은 i 및 n-i,스팬> 페인팅 길이의 절반에 도달할 때까지 작업이 반복됩니다. 배열의 전반부에서만 작업을 반복해야 하며, 그렇지 않으면 후반부의 요소를 이미 처리된 전반부의 요소로 교체하고 시작 배열로 돌아갑니다.
다음 코드는 배열을 반복 메서드로 바꿉니다.
#include< conio.h>이 코드를 실행하면
#include< stdio.h>
int main()
{
int i,n,temp;
printf("배열 크기 ");
scanf("%d",& n);
int t[n];
for(i=0; 나는< n; i++)
{
printf("t[%d]=",i);
scanf("%d",& t[i]);
}
i=0;
동안(i< n/2)
{
온도 = t[i];
//n-1 배열이 0
t[i]=t[n-1-i];
t[n-1-i]=온도;
i++;
}
printf("\n역표: \n");
for(i=0; 나는< n; i++)
{
printf("\nt[%d]=%d",i,t[i]);
}
getch();
}
재귀 방법으로 C에서 배열 반전
이제 반복 방법에 대한 프로그램이 있으므로 공식 버전을 만들 것입니다. 당신은 질문을 할 것입니다, 그것은 무엇과 다른가요? 잘! 재귀 버전은 지렛대에 도달할 때까지 자신을 호출하는 함수입니다. 이 재귀 호출은 반복 버전의 루프와 동일합니다.
재귀 프로그램을 얻으려면 반복 프로그램을 변환하기만 하면 됩니다. 받침점은 while loop나는< n/2 (프로그램에 i>=(n+1)/2 함수가 호출될 때 배열 n-1의 크기가 감소했기 때문입니다). i은 i.
재귀 프로그램을 얻으려면 반복 프로그램을 변환하기만 하면 됩니다. 받침점은 while loop나는< n/2 (프로그램에 i>=(n+1)/2 함수가 호출될 때 배열 n-1의 크기가 감소했기 때문입니다). i은 i.
다음 예제는 C.
#include< conio.h>
#include< stdio.h>
int* 역(int[],int,int);
main()
{
int i,n;
printf("배열의 크기");
scanf("%d",& n);
int t[n];
int *ti;
for(i=0; 나는< n; i++)
{
printf("t[%d]=",i);
scanf("%d",& t[i]);
}
ti=역(t,n-1,0);
printf("\n역방향 배열: \n");
for(i=0; 나는< n; i++)
{
printf("\nt[%d]=%d",i,ti[i]);
}
getch();
}
int* 역(int t[],int n, int i)
{
int temp;
if(i>=(n+1)/2 )
반환 t;
else{
temp = t[i];
t[i]=t[n-i];
t[n-i]=온도;
역 반환 (t,n,i+1);
}
}