c언어 질문인데 해독 한번만 해주세요 ㅠㅠ 부탁드립니다.

rg5668의 이미지

 
#include <stdio.h>
 
int refunc(int i) {
    printf("%d",i);
    if(i < 1) {
        return 2;
    }
    else {
 
        return (3*refunc(i-1)+1);
    }
}
 
int main() {
    int n;
    n = refunc(7);
 
    printf("\n");
    printf("%d\n",n);
}
 


결과가 7 6 5 4 3 2 1 0
5467

재귀함수인거는 알겠는데 refunc에서 int 7값을 보냈는데 리턴 값만 계산해서 보내주면 되는거 아닌가봐요 ㅠㅠ 결과 값이 어떻게 저렇게 나오는지 설명 제발 부탁드립니다ㅠㅠㅠㅠ

frech의 이미지

점화식 보세요.

댓글 첨부 파일: 
첨부파일 크기
Image icon Screenshot from 2021-04-22 22-13-27.png1.75 KB
i1004gy의 이미지

https://www.acmicpc.net/
여기에 질문해 보세요

시험 화팅의 이미지

팩토리얼 원리랑 비슷해요
팩토리얼이 n * fact(n) 일 때
5가 들어오면 1x2. 2x3. 6x4. 24x5 120 나오잖아요
이거는 마지막 0일 때 리턴이 2니깐
2x3+1 7x3+1 22x3+1...
하면 5467 나오네요