재귀에 손을 대고 싶었지만 오해하는 것 같습니다.
나는 책에서 질문을 읽었고 약간 혼란스럽고 비좁고 싶지 않습니다. 함수 호출에 대해서도 스택으로 견고한 설명을 원합니다.
class rectest
{
int values[];
rectest(int i)
{
values = new int[i];
}
void printarray(int i)
{
if(i==0)
return ;
else printarray(i-1);
System.out.print(values[i-1]+" ");
}
}
public class recursion
{
public static void main(String args[])
{
rectest ob = new rectest(10);
int i ;
for(i=0 ; i<10 ; i++)
ob.values[i] = i ;
ob.printarray(10);
}
}
RECURSION 은 무엇이든 반복해서 부르는 것을 의미합니다.
이것은 재귀가 어떻게 작동하는지 배우는 전통적이고 중요한 프로그램 중 하나입니다. 재귀이고 왜 계승 계산의 예를 들어 보겠습니다. 의사 코드는 다음과 같습니다.
계승 함수는 다음과 같습니다.
input: integer n such that n >= 1
output: [n × (n-1) × (n-2) × … × 1]
1. if n is >= 1, return [ n × factorial(n-1) ]
2. otherwise, return 1
end factorial
이제 여기서 일어나는 일은 항상 자신을 계속해서 호출하는 [n * factorial (n-1)]을 반환한다는 것입니다.
이제 당신의 상황을 고려합시다
public class recursion
{
public static void main(String args[])
{
rectest ob = new rectest(10);
// 여기서 객체를 초기화하고 생성자를 호출하고 크기가 10 인 배열을 초기화합니다.
int i ;
for(i=0 ; i<10 ; i++)
ob.values[i] = i ;
// 여기서는 0 번 위치 값 [0] = 0과 같은 특정 값에 모든 멤버 변수를 할당합니다.
ob.printarray (10); // 여기서 당신이 지금 전달한 10 개의 값을 인쇄하고 있습니다. 여기서 중요한 일이 발생합니다.
}} 이제 printarray()
여기 에서 메서드를 살펴보십시오.
void printarray(int i)
{
if(i==0)
return ;
else printarray(i-1);
//printarray(i-1) here it calls the method itself so as to print all the values recursively
System.out.print(values[i-1]+" ");
}
더 많은 질문이 있으면 그게 다야
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다