프로그램 명: upstair                                                                                                            제한시간: 1 초


최대 2 칸 까지 오를 수 있을 때 오르는 방법의 가짓수를 출력 하는 문제이다.

그림은 n 이 4 인 경우의 예 이다.

  • 1 - 2 - 3 - 4
  • 1 - 2 - 4
  • 1 - 3 - 4
  • 2 - 3 - 4
  • 2 - 4

입력

n 은 30 이하의 양의 정수이다.

출력

오를 수 있는 가짓 수를 출력한다.

입출력 예

입력

4

출력

5


[문제 풀이]

최대 2칸을 오를 수 있다는 것은, 한 번에 1칸 또는 2칸을 올라갈 수 있다는 뜻이다.

  • 1칸씩 올라가기 : 1 - 2 - 3 - 4
  • 1칸 - 1칸 - 2칸 : 1 - 2 - 4
  • 1칸 - 2칸 - 1칸 : 1 - 3 - 4
  • 2칸 - 1칸 - 1칸 : 2 - 3 - 4
  • 2칸씩 올라가기 : 2 - 4 
이렇게 입력받은 수(n)만큼 올라갈 수 있는 방법의 가짓 수를 출력하는 것이 목표이다.

[소스코드 설명]
stair()의 n은 목표 계단 높이, now는 현재 계단 높이를 말한다.
문제 풀이에서도 설명을 했듯이, 한 번에 1칸 또는 2칸을 올라갈 수 있다는 뜻이기 때문에 

1칸 올라가는 경우(stair(n, now + 1))와 2칸 올라가는 경우(stair(n, now + 2))를 모두 구해서
목표 계단 높이(n)과 같을 때까지 재귀 호출을 하였다.


'알고리즘 > 재귀' 카테고리의 다른 글

[재귀] 유클리드 호제법  (0) 2014.05.15
[재귀] x의 y 거듭제곱  (0) 2014.05.15
[Doc.] 재귀 (recursion)  (0) 2014.05.15
Posted by 밍쫑
,