미로에서 stack에 있는 길을 그래픽(벽* 길^)표현하구 싶은데요

nidle의 이미지

안녕하세요
미로 프로그램을 짜는데 길은 stack에 들어가는데
들어간 길을 그래픽 (예를들어 벽* 길은^로 표현)으로 표현을 하고 싶은데
그냥 for문이나 이런걸로는 점 힘들더라구요
다른 라이브러리 함수를 써야되나요,,

아참그리구여 제가 미로를 재귀함수를 써서 만들었거든요
길을 찾다가 막히면 종료 하면서 백하는 그런데
재귀는 별루 쓰고 싶지않아서 다른 알고리즘이은 어떤게 있을가요,,

한가지만더요 책을 보면 백이면 백 모든 책들이 goto문을 무지 하게싫어하더라구요 근데 재가 보기에는 goto문보다는 재귀함수 쓰는게 더 위험할듯한데
재귀함수에 대해서는 그리 혹평까지는 안하다러구요
과연 둘중에 한개를 써야된다면 어떤것을써야될까요

쓰다보니 3가지나 질문을 했군요 .. 그럼이만

vacancy의 이미지

보통 Search를 하는데는
Depth First Search와,
Bredth First Search가 있죠.

전자는 주로 Stack을 이용한 재귀 호출로 구현이 되고,
후자는 Queue를 이용하고 재귀 호출보다는 대개 루프로 구현이 됩니다.
후자를 적용해보시면 재귀 호출은 쓰지 않아도 되겠죠.
( 대신 Queue에 저장할 Data Structure를 구성하는게 만만치 않죠. )

재귀 호출을 사용하는 것은,
프로그램을 Simple하게 만들 수 있다는 면이 가장 큰 장점이죠.
Performance가 아주 중요한 상황이거나
Stack Overflow의 위험이 있거나 하지 않다면
재귀 호출을 사용하는 것은 꽤 권장할만한 일이라고 생각합니다.
재귀 호출을 사용한 코드들은 꽤 아름다워서 읽기도 좋은 편이니까요.
그렇다고 해서 불필요한 곳에까지 쓰는 건 곤란하고요. -_-;
( 흔히 예로 나오는 피보나치 수열 같은데는 실제론 적용하지 않는게 좋겠죠. )

goto는 프로그램의 흐름을 한 눈에 확인하기 어렵게 한다는 것이 가장 문제죠.
특히나 goto를 대신할만한 각종 분기/반복문들이 마련되어 있는 현 상황에서,
굳이 goto를 써야할 만한 상황이 사실 드무니까요.
그런 분기/반복문들로 안된다면 뭔가 일반적이지 못하다고 볼 수 있죠.

goto와 재귀 호출은 1:1로 대응되는 것이 아니라고 보고요.
같은 것을 저 둘 중 하나로 구현하라면 재귀 호출이 좋다고 봅니다.
( goto로 하려면 직접 Stack도 구현해줘야겠죠 ? -_- )
결정적으로 goto는 아름답지 않잖아요 ? -_-;

댓글 달기

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