0000~3333 까지 출력

seopy의 이미지

c언어 재귀함수를 이용해서

배열 안에 0000~3333까지 모든 경우의 수가 들어가도록 프로그램을 짜보고 싶은데

어떻게 접근해야할지 모르겠습니다ㅠㅠ

swish95의 이미지

경우의 수라는게 0,1,2,3 을 네개의 칸에 채울때 나오는거 맞나요?
4P4 로 표시되는 permutation(순열) 인듯한데

라이브러리도 많고 참조사이트도 많습니다.
당장 구글만 검색해봐도 아주 잘되어 있네요..

하지만 님이 이해하느냐 못하느냐의 차이 아닐까요 ^^

------------------------------------------------------------
ProgrammingHolic

seopy의 이미지

출력했을 때,
0000 0001 0002 0003 0010 ... 3333 이렇게 나오도록 하고 싶어서요 ㅎㅎ
네 한 번 찾아보도록 할게요 감사합니다

swish95의 이미지

어떻게 접근하냐라고 하시지만
님의 수준을 모르니 뭐라고 딱히 말씀드리기가 그래서요 ^^

생각에는 재귀라면 뭐니 뭐니 해도 피보나치 아니겠습니까 ㅋㅋ

------------------------------------------------------------
ProgrammingHolic

seopy의 이미지

아직 초보라서 ㅎㅎ;;
어쨌든 좋은 조언 감사합니다

익명 사용자의 이미지

4진수인가요?

seopy의 이미지

아뇨!! 진법 변환 이런거는 아니에요!

익명 사용자의 이미지

> 출력했을 때,
> 0000 0001 0002 0003 0010 ... 3333 이렇게 나오도록 하고 싶어서요 ㅎㅎ

이거는 4진수에요. 아래 댓글 달았는데 십진수 0에서 255까지 숫자를 4진수 문자로 출력하면 되요.
0000 0
0001 1
0002
0003
0010
0011
0012
0013
0020
...
3332 254
3333 255
---------
4진수 문자로 출력하려면,
나누기 4, 나누기 (4*4), 나누기 (4*4*4) 로.. 나머지 값을 취하면 될거에요.
고등학교 수학책에 2진수, 10진수 변환 방법이 있을거고,
대학 이산수학책에 2진수, 10진수 변환 방법이 있을거에요.
인터넷에 진수 변환 공식 검색하면 나오니까... 그렇게 구현해보세요.
ansi c 또는 posix c 에 진수 변환 함수가 있는지는 모르겠네요.
strtol 라는 문자열을 long 숫자로 바꾸는 함수가 있긴 있어요.

seopy의 이미지

넵!! 정말 감사합니다ㅠㅠ
참고해서 구현해보겠습니다 :)

익명 사용자의 이미지

(0..255).each do |i| # 십진수 0에서 255까지
  base4 = i.to_s(4) # i.to_s(4)는 4진수 문자열로 변환하여 base4 변수에 저장
  puts "0" * (4 - base4.size) + base4 # (4 - base4.size) 만큼 "0" 을 넣어줌
end

위 코드를 실행하면
0000
0001
0002
...
3332
3333
출력됩니다. 총 경우의 수는 0부터 255까지니까 256개입니다.
seopy의 이미지

이건 무슨 언어로 작성된건가요...??

익명 사용자의 이미지

루비 언어로 작성한거고요.
아래는 c 언어로 작성해 봅니다.
재귀적으로 작동하지 않습니다. 만약, 4진수가 아닌 x진수에 적용하려면 재귀적으로 하는게 도움이 될 수도 있으나, 만약 어떤 문제 해결을 func1() --> func1() --> func1() ... 이런 식으로 반복이 10000 개 정도 되는 경우가 발생한다면, 에러 떨어질 겁니다. 아마 메모리 소비도 클 듯하고.
따라서 웬만하면 재귀적으로 작성하지 말고 직접 풀어서 작성하시는 것을 추천드립니다.

#include <stdio.h>
 
int main (void)
{
  int i;
 
  for (i = 0; i < 256; i++)
  {
    printf ("%d%d%d%d\n", (i / (4 * 4 * 4)) % 4,
                          (i / (4 * 4)) % 4,
                          (i / (4)) % 4,
                          (i % 4));
  }
 
  return 0;
}
seopy의 이미지

친절한 설명 정말 감사합니다ㅠㅠ
잘 배우고 갑니다 ㅠㅠ

swish95의 이미지

재귀적으로 하는게 문제가 되는게 아니라.
재귀로 짤때 주의 해야 하는게 많은게 사실입니다.
재귀 함수를 공부하시려거든 Tail Recursion 같은거 잘 알고 하는게 좋겠죠.

익명 사용자님이 너무나 친절하게 답글 달아주셨는데 재귀함수에 대해 막연한 공포를 주는거 같아 사족 달아 봅니다.

------------------------------------------------------------
ProgrammingHolic

익명 사용자의 이미지

문자가 아닌 4진수는 너무 쉬워서,, 그냥... 십진수 0에서 255 까지 출력하면 되겠습니다.
출력 결과를 4진수 문자로 다시 변환하면 되죠.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.