하나의 함수에서 자기 자신을 다시 호출해 작업을 수행하는 알고리즘
재귀 방식으로 푼다 = 귀납적 방식으로 푼다
위가 모두 참이면 모든 도미노가 쓰러진다. 라는 결론에 도달할 수 있다.

코드가 동작하는 흐름을 그대로 따라간다.
fun1(3) 실행 → 3 출력 → func1(2) 호출 → 2 출력 → func1(1) 호출 → 1 출력 → func1(0) 호출 순으로 진행되고 최종적으로 3 2 1 이 출력된다.
k k-1 k-2.....1 순으로 출력하면 func1(k+1)은 k+1 k k-1.....1 을 출력한다.위의 두 문장이 참이므로 func1(n)는 n부터 1까지 차례로 출력하는 함수이다.
재귀함수는 특정 입력에 대해서는 자기 자신을 호출하지 않고 종료되어야 하는데 이러한 입력을 base condition이라 한다. 그리고 모든 입력은 base condition으로 수렴해야 한다.

n = ...3,2,1,0 즉, n이 0일 때로 수렴하게 된다.void : 재귀 함수가 값을 계산하여 반환할 필요 없이, 단순히 출력, 변경 등 어떤 동작만을 수행하는 경우void가 아닌 값 : 재귀 함수가 계산한 결과를 리턴해야 하는 경우
위의 피보나치 수열을 재귀로 구현하는 경우 base condition은 n이 1 이하일 때이고 모든 입력에 대해 base condition으로 수렴한다. 피보나치 수열의 n번째 항의 값을 구하려면 자기 자신을 여러 번 호출하는 과정에서 이미 계산한 값을 다시 계산해야 하기 때문에 시간 복잡도가 보다 훨씬 커진다.