어떤 함수 또는 프로시져가 수행 도중 반복적인 알고리즘을 실행시키기 위해 자기 자신을 다시 부르는 경우를 recursion(되부름)이라고 한다. 포트란, 코볼, 베이직 등의 프로그래밍 언어에서는 지역 변수가 없거나, 있더라도 다른 프로시져와 연관성을 가지지 못하는 정적(static)으로 할당되므로 for문, while문, do문 등의 반복문을 사용하여 같은 명령을 여러번 수행하는 알고리즘을 사용한다. 반면 리스프나 프롤로그 그리고 파스칼이나 C, PL/1 등의 알골계 언어들은 recursion(되부름)을 주된 반복 제어 구조로 사용하고 있다.