자연수 n을 입력 받아 이를 n보다 작은 자연수들의 합으로 나타내는 방법 가지수를 출력하는 프로그램을 재귀 호출을 사용하여 작성하시오(C)
조회수 2176회
'자연수 n을 입력 받아 이를 n보다 작은 자연수들의 합으로 나타내는 방법 가지수를 출력하는 프로그램을 재귀 호출을 사용하여 작성하시오.'라는 문제가 있어요ㅠㅠ c언어로 명쾌한 해답 내주세요ㅠㅠ
ex)n=4
1+1+1+1
1+1+2
1+1+2
1+2+1
2+1+1
2+2
3+1
1+3
이므로 출력결과가 '7가지'라고 나오는 c언어 코드 좀 알려주세요ㅜㅜ 제발 부탁드립니다 프로그래머님들!!!
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
#include <stdio.h> void f(int* a, int s, int n, int idx){ int i; if(s==0){ for(i=0; i<idx-1; i++) printf("%d+", a[i]); printf("%d\n", a[i]); return; } for(int i=1; i<n; i++) if(s-i>=0){ a[idx]=i; f(a, s-i, n, idx+1); } } int main(){ int n, *a; scanf("%d", &n); a[0]=0; f(a, n, n, 0); }
재귀호출을 사용했습니다.
위에 나온 예제처럼 정렬은 안해도 되죠?
댓글 입력