Computer >> 컴퓨터 >  >> 프로그램 작성 >> 프로그램 작성

알고리즘 사양 - 데이터 구조 소개

<시간/>

알고리즘은 따르는 경우 특정 작업을 수행하는 유한한 명령 집합으로 정의됩니다. 모든 알고리즘은 다음 기준을 충족해야 합니다.

입력. 알고리즘에는 지정된 개체 집합에서 가져오거나 수집한 0개 이상의 입력이 있습니다.

산출. 알고리즘에는 입력과 특정 관계가 있는 하나 이상의 출력이 있습니다.

확실성. 각 단계는 명확하게 정의되어야 합니다. 각 지침은 명확하고 모호하지 않아야 합니다.

유한성. 알고리즘은 항상 유한한 수의 단계 후에 완료되거나 종료되어야 합니다.

유효성. 수행할 모든 작업은 정확하고 유한한 길이로 수행될 수 있을 정도로 충분히 기본적이어야 합니다.

알고리즘을 다양한 방식으로 묘사할 수 있습니다.

  • 자연어:영어와 같은 자연어 구현
  • 순서도:알고리즘이 작고 단순한 경우에만 순서도를 나타내는 그래픽 표현입니다.
  • 의사 코드:이 유사 코드는 대부분의 모호성 문제를 건너뜁니다. 구문 프로그래밍 언어와 관련하여 특별하지 않습니다.

예 1:숫자의 계승값을 계산하는 알고리즘

Step 1: a number n is inputted
Step 2: variable final is set as 1
Step 3: final<= final * n
Step 4: decrease n
Step 5: verify if n is equal to 0
Step 6: if n is equal to zero, goto step 8 (break out of loop)
Step 7: else goto step 3
Step 8: the result final is printed

재귀 알고리즘

재귀 알고리즘은 일반적으로 반환 값을 매개변수로 알고리즘에 다시 전달하는 자체를 호출합니다. 이 매개변수는 입력을 나타내고 반환 값은 출력을 나타냅니다.

재귀 알고리즘은 문제를 동일한 성격의 하위 문제로 나누는 단순화 방법으로 정의됩니다. 한 재귀의 결과는 다음 재귀의 입력으로 처리됩니다. 보충은 자기 유사 방식으로 이루어집니다. 알고리즘은 더 작은 입력 값으로 스스로를 호출하고 이러한 더 작은 값에 대한 작업을 수행하여 결과를 얻습니다. 계승 알고리즘의 생성, 피보나치 수열은 재귀 알고리즘의 예로 표시됩니다.

예:재귀를 사용하여 계승 함수 작성

intfactorialA(int n)
{
   return n * factorialA(n-1);
}