반응형 재귀5 리스프(LISP) 재귀 함수 구현해보자 리스트(LISP)로 재귀 함수이제 만들어볼 함수는 리스트의 합을 구하는 재귀 함수이다. 리스트는 재귀 함수와 궁합이 잘 맞는다. 재귀 함수가 작동하는 흐름함수의 이름은 sum-of-list로 하고, 길이가 n인 리스트를 입력으로 받아 그 총합을 반환하는 함수를 작성한다.구체적인 입력 인자로 [1, 2, 3]과 같이 세 개의 값으로 구성된 리스트를 생각해 보자.sum-of-list([1,2,3]) = 1 + sum-of-list[2, 3]이다.위의 식을 일반화하면 다음과 같이 된다. sum-of-list = list의 첫 번째 요소 + sum-of-list(첫 번째 요소를 제외한 리스트)종료 조건은 입력 인자가 빈 리스트일 때 0을 반환하면 된다.해당 내용을 코드로 작성해 보자.(defun sum-of-l.. 2024. 7. 16. C# 재귀 호출 동작 방식 재귀 호출에 대해 재귀(recursion) 함수란 자신을 호출하는 함수를 말하는데, while이나 for와 같은 순환처럼 재귀 함수도 하나씩 작은 부분을 처리한 결과를 결합해 하나의 복잡한 문제를 해결해 나가는 방법이다. 하지만 for나 while은 작업이 끝날 때까지 반복을 계속하는 반면, 재귀호출은 작업 자체를 잘게 쪼개서 처리한 결과를 결합하는 방법으로 더 큰 문제를 해결한다는 차이가 있다. 반복에 비해 재귀가 더 짧게 구현 가능한 경우가 많기 때문에 함수형 접근 방식에 적합하지만, 설계와 테스트는 더 어려운 편이다. 재귀 호출로 코드를 더 짧게 구현 가능 설계와 테스트 난이도가 올라감 using System; public partial class Program { static void Main(s.. 2024. 3. 29. 재귀 vs 꼬리 재귀 재귀(Recursion)함수 내에서 자기 스스로를 호출하는 함수를 재귀 함수라고 한다.그리고 함수형 프로그래밍에서 불변성(Immutable)을 유지하기 위해서 재귀를 사용한다. 불변성(Immutable)은 함수형 코드의 핵심적인 속성이다. 프로그램의 변경 가능한 상태가 적을수록 프로그래머가 프로그램을 작성하는 동안 고민할 대상이 줄어들게 된다. 다수의 프로그래밍 오류는 프로그래머가 변경하는 세부사항을 대량으로 동시에 유지할 수 없기 때문에 발생한다. 상태를 변경하면 반드시 이를 추적하고 관리해야 하는 복잡함이 발생한다. 재귀를 사용하면 프로그래머가 신경 써야 하는 변수가 줄어든다. 그리고 재귀가 호출되면서 변경되는 값들이 복사를 통해서 전달된다. 불변성을 유지하는 방법은 매번 값을 복사하는 것이다. 재귀.. 2024. 3. 15. [프로그래머스 Programmers] 삼각 달팽이 문제 설명 정수 n이 매개변수로 주어집니다. 다음 그림과 같이 밑변의 길이와 높이가 n인 삼각형에서 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한 후, 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 return 하도록 solution 함수를 완성해주세요. 제한 사항 n은 1 이상 1,000 이하입니다. 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 코드 using System; using System.Collections.Generic; public class Solution { public int[] solution(int .. 2023. 9. 21. [프로그래머스 Programmers] 하노이의 탑 문제 설명 하노이 탑(Tower of Hanoi)은 퍼즐의 일종입니다. 세 개의 기둥과 이 기동에 꽂을 수 있는 크기가 다양한 원판들이 있고, 퍼즐을 시작하기 전에는 한 기둥에 원판들이 작은 것이 위에 있도록 순서대로 쌓여 있습니다. 게임의 목적은 다음 두 가지 조건을 만족시키면서, 한 기둥에 꽂힌 원판들을 그 순서 그대로 다른 기둥으로 옮겨서 다시 쌓는 것입니다. 한 번에 하나의 원판만 옮길 수 있습니다. 큰 원판이 작은 원판 위에 있어서는 안됩니다. 하노이 탑의 세 개의 기둥을 왼쪽 부터 1번, 2번, 3번이라고 하겠습니다. 1번에는 n개의 원판이 있고 이 n개의 원판을 3번 원판으로 최소 횟수로 옮기려고 합니다. 1번 기둥에 있는 원판의 개수 n이 매개변수로 주어질 때, n개의 원판을 3번 원판으로.. 2023. 9. 7. 이전 1 다음