C언어 문제 하나만 도와주시면 안될까요

ndh1868의 이미지

음이 아닌 정수를 인자로 받아 홀짝을 판별하는 함수 even과 odd를 서로가 서로를 이용해서 다음과 같이 정의하였다.

typedef int bool;

bool even(int n)
{
return odd(n-1);
{

bool odd(int n)
{
return even(n-1);
}

위 함수 정의가 틀린 이유를 설명하고 올바르게 고쳐라
(서로가 서로를 이용해 정의하도록 해야 한다)

-----------------------------------------------------

chadr의 이미지

책만 많이 보셔서 그렇습니다.

책은 그만 보고 직접 짜보세요.

그러면 책 없어도 저런건 바로 풀 수 있습니다.

힌트를 드리자면 종료 조건을 추가해보세요.
그리고 저게 컴파일 되기 위해서는 맨 위에 함수 선언들이 필요합니다.

-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.

익명 사용자의 이미지

대학교가 방학할때라서 알려드립니다.
별것도 아닌걸로 생색내려는게 아니고,
하도 학교숙제를 여기에 물어보는 사람이 많아서...

생각하신대로 무한호출에 빠지는게 맞고요,
재귀호출 함수는 반드시 종료조건이 명시되어야 합니다.
(재귀호출 함수에 대해 검색해 보시는걸 추천합니다.)
그렇지 않으면 무한 뺑뺑이에서 빠져나올수가 없어요.

even과 odd 중에 둘 중 하나를 고치면 될텐데,
출제자의 의도를 고려하면 다음과 같이 푸는게 맞겠죠.

bool odd(int n)
{
if ( n == 1 ) return 1;
else return even(n-1);
}

이렇게 고치면 될 것 같네요.

사실 저 문제는 출제자의 의도를 모르면
출제자가 원하는 답을 내놓기가 쉽지 않은 문제지요.
실제로 프로그램을 짤 때는 그냥 % 연산자 써서 구현하는게 더 빠르고 좋습니다만
그걸 묻는 문제는 아닌거같고, 재귀호출을 이해하게 하려고 낸 문제 같습니다.

저런 문제를 잘 풀고자 하신다면...
제대로 학문적으로 접근하려면 컴퓨터 과학 개론서나 이산수학 같은걸 공부하시면 되는데
옆에 적절한 조언자가 없다면 그건 쉬운길이 아니고,
그냥 가지신 프로그래밍 언어 입문용 책들 가지고 죽 따라가면서 맨땅에 헤딩하다 보면
어느 사이엔가 잘 풀수 있게 될 겁니다.

그나저나 어쩐지 문제 스타일이 A Book on C 인거 같은데... ABC 맞나요?
좋은 책이긴 한데 초보자가 독학하기에 좋은 책은 아니더군요.
연습문제가 입문서치고는 너무 깊이있는 지식을 요구해서...

ndh1868의 이미지

답변들 고맙습니다.

익명 사용자의 이미지

왜 1년만에 감사 답글이 올라온건지 이유가 궁금하군요.
늦었다고 타박하는게 아니라, 1년이나 지났으면 보통은 그냥 안달지 않나요;;;

익명 사용자의 이미지

박수

익명 사용자의 이미지

+1

HDNua의 이미지

+2

저는 이렇게 생각했습니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.