
자의 눈금은 프랙탈과 비슷하다.
그렇다면, base case는 어떻게 될까?
가장 작은 눈금이 0 보다 커야한다.
English Ruler 클래스를 만들어보자.
내부 작동원리는 프로그래머의 자율성을 따라야 하므로
생성자와 drawRuler() 만 노출하고
사용자에게 노출하기 싫은 메소드는 private 필드에 넣어야 한다.
멤버 변수 m_majorLength는 눈금 막대의 길이이고(말그대로 눈금 막대의 길이이다)
m_numInches는 자 전체의 길이이다.
class EnglishRuler{
public:
EnglishRuler(size_t numInches, size_t majorLength) :
m_numInches { numInches }, m_majorLength { majorLength }{
}
public:
void drawRuler(){
drawLine(m_majorLength, "0");
for(size_t i = 1; i < m_numInches; i++){
drawInterval(m_majorLength - 1);
drawLine(m_majorLength, std::to_string(i));
}
}
private:
void drawLine(size_t tickLength, std::string tickLabel = ""){
for(size_t i = 0; i < tickLength; i++){
cout << "-";
}
if(tickLabel != ""){
cout << tickLabel;
}
cout << endl;
}
void drawInterval(size_t centerLength){
if(centerLength > 0){
drawInterval(centerLength - 1);
drawLine(centerLength);
drawInterval(centerLength - 1);
}
}
public:
size_t m_numInches;
size_t m_majorLength;
};
'알고리즘 + 자료구조' 카테고리의 다른 글
트리 (0) | 2023.06.15 |
---|---|
Recursion(재귀) (0) | 2023.06.14 |
Singly Linked List (0) | 2022.10.17 |
순수 가우스 소거법 Naive Gaussian Elimination (0) | 2022.07.14 |
호너씨와 조립제법과 수도미분 (0) | 2022.07.10 |