c언어 재귀함수 연습 원인좀 알려주세요.


재귀함수로 반복문 연습해보는중인데 저가 원하는 출력문은

*****

****

***

**

*

이렇게 나오는것인데 저위에 코드대로 해보면

*****

****

***

**

*

*****

출력문이 이런형태로 나오게되는데 원인좀 알려주세요!.

왜  한번더 돌게 되는지 설명좀 해주세요.



   일단 완전 잘못 짰습니다.  
 

○ for_1 함수 중간에 main() 함수를 다시 호출하는 것부터 완전 잘못된 코드입니다. 이것은 재귀함수가 아닙니다. 

○ 코드를 고쳐줄까하고 보다가, 너무 모르는 것이 많은 것 같아서, 완전히 다시 짜서 올립니다. 


1. 코드가 컴파일되서 돌지도 않습니다. 예를 들어, for_1() 함수의 return을 int 형으로 선언하셨는데, 실제로는 end==0 인 케이스에서 return; 만 하고 있습니다. 

2. main() 함수를 다른 함수에서 다시 호출하는 것은 절대 안됩니다. 

3. 함수 이름, 변수 이름을 의미 없게 짓는 것은 피하셔야 합니다. 

4. static 선언도 재귀함수의 원래 의도와 맞지 않습니다.



 

 코드 예제 

 

#include 

void printStar(int n);

int main() {
    printStar(5);	//Print Star

    getchar();		//Just for break

    return 0;
}

void printStar(int n)
{
    int i;

    if (n > 0)
    {
        for (i = 0; i < n; i++)
        {
            printf("*");
        }
        printf("\n");

        printStar(n - 1);	//Recusive Call
    }
    else
    {
        return;
    }
}




   실행 결과  
 








Posted by 지그프리드 지그프리드

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절


BLOG main image
일상, 프로그래밍, IT 그리고 직장생활, Dive, 여행 by 지그프리드

카테고리

Class List (402)
Studies (30)
Exercise & Quizz (10)
Term Project (0)
ECIM list (Help!) (10)
Issues & News (0)
Gossip about IT & Job (22)
Tools (2)
Think about the Justice (23)
Book Review (170)
조엘 온 소프트웨어(번역) (28)
Diary (87)
Vacations (9)
Clash of clans 클래시 오브.. (11)

글 보관함

달력

«   2019/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
Total : 315,600
Today : 2 Yesterday : 22