2017-12-19 5 views
0

내 질문에 매우 간단하다. 재귀 함수로는 잘 수행하지 못한다.최소한의 숫자를 확인하기위한 재귀 함수

정지 조건 -1까지 자연스러운 숫자 시퀀스 (n> 0)를 스캔하는 재귀 함수를 작성하십시오. 시퀀스에 숫자가없는 경우 프로그램은 -1을 인쇄해야합니다. (예 : 순서 5, 7, 8, 4, 3, 5, -1, 프로그램은 그래서 내가 가지고 얼마나 멀리 3.

를 인쇄해야합니다 :

void Ex1() { 
    printf("Enter sequence of numbers until -1"); 
    minimal_recursive_function(); 
} 

int minimal_recursive_function() { 
    int n, min; 
    scanf("%d", &n); 
    if ((min > n) && (n>0)) { 
      min = n; 
    } 
    if (n == -1) { 
     return min; 
    } 
    else { 
     minimal_recursive_function(min); 
    } 
    printf("%d", min); 
} 

프로그램주 - 재귀 함수는 다른 함수에서 인수를 받아서는 안됩니다.

물론 힌트를 얻고 싶습니다.

답변

0

당신의 프로를 해결할 수 있습니다. 첫 번째 반복을 특별한 경우로 취급하여 처음으로 통과하는 인수가없고, 재귀를 시작하기 전에 별도로 처리하는 흠. 이렇게하면 -1 이전에 값이 입력되지 않은 예외적 인 경우를 쉽게 처리 할 수 ​​있으며 재귀를 시작할 값을 가질 수 있습니다.

void Ex1() { 
    int start; 
    scanf("%d", &start); 
    if (start == -1) printf("-1"); 
    else printf("%d", minimal(start)); 
} 

int minimal(int min) { 
    int n; 
    scanf("%d", &n); 
    if (n == -1) return min; 
    if (n < min) min = n; 
    return minimal(min); 
} 
+0

나는이 질문을 올바르게 이해하지 못했다는 것을 인정해야했으며, 슬픈 일은 그것이 내 실수였습니다. –