C 언어와 귀속과 비귀속의 장단점 및 선택에 대한 간단한 분석.

4798 단어
귀속 함수와 비귀속 함수의 차이는 다음과 같다.   귀속 코드는 사고방식이 뚜렷하고 읽을 만하다.귀속 효율이 높지 않다.
  귀속과 비귀속은 문제를 해결하는 수단으로서 각각의 장점과 폐단이 있기 때문에 우리는 각자의 특성을 익히고 파악하여 서로 다른 문제를 대하고 가장 좋은 알고리즘을 만들어야 한다.
예를 들어 피보나치 수열:
int fib(int num)// 
{
 if(num==1||num==2)
 {
  return fib(num-1)+fib(num-2)
 }
}
int fib(int num)// 
{
 int num1=1;
 int num2=1;
 int num=1;
 if(num>2)
 {
  for(int i=3;i<=num;i++)
  {
   num=num1+num2;
   num1=num1;
   num2=num;
  }
 return num;
 }

우리는 다음과 같이 알 수 있다.   귀속의 장점: 코드는 상대적으로 비귀속에 비해 더욱 간결하고 사고방식이 뚜렷하다.귀환의 나쁜 점: 귀환은 시스템 창고가 필요하기 때문에 소모 공간이 비귀환보다 훨씬 크다.그리고 귀속 깊이가 너무 깊으면 시스템이 무너질 수도 있다.
비귀속의 장점: 효율이 높고 실행 시간은 순환의 횟수가 증가함에 따라 증가할 뿐 추가 비용이 없고 추가 공간을 차지하지 않는다.비귀속의 단점: 이해하기 쉽지 않고 복잡한 문제를 작성할 때 비교적 어렵다.
통속적으로 말하면 귀속은 문제를 층층이 세분화하고 여러 개의 작은 문제로 분해한 다음에 하나하나 해결하는 것이다.대다수 상황에서 프로그래머들은 전체 문제의 해결 방법을 생각해야 하기 때문에 프로그래머 자신의 사고에 큰 도전이 있다.
  는 많은 상황에서 수학 공식의 지원만 있으면 귀속 알고리즘은 보통 문제를 해결하기 쉽다.
귀속과 순환 사이의 선택.일반적인 상황에서\순환 방법이 비교적 쉽게 찾을 수 있을 때\귀속 사용을 피해야 한다.이것은 문제를 점차적인 관계식에 따라 묘사할 수 있을 때\8194는 자주 만나는 것이다.\예컨대 곱하기 문제는 바로 이런 상황이다.반대로  순환 방법을 세우기 어려울 때  귀환은 좋은 방법이다.실제로  는 어떤 상황에서   귀속 방법은 항상 명백히 알 수 있지만   순환 방법은 상당히 찾기 어렵다.
   귀속 알고리즘은 사실상 분할하여 치료하는 방법으로 복잡한 문제를 간단한 문제로 분해하여 해답을 구한다.일부 복잡한 문제에 대해 귀속 알고리즘은 자연스럽고 논리에 맞는 문제를 해결하는 방식이지만 귀속 알고리즘의 집행 효율은 보통 비교적 떨어진다.따라서 어떤 문제를 풀 때 귀속 알고리즘을 이용하여 문제를 분석하고 비귀속 알고리즘으로 문제를 구한다.또한 일부 프로그램 설계 언어는 귀속을 지원하지 않기 때문에 귀속 알고리즘을 비귀속 알고리즘으로 전환해야 한다.
  한 마디로 하면 작은 것은 간단하게 순환을 하고 복잡도가 높은 문제, 시스템이 버틸 수 있는 상황에서 귀속을 한다.(개인 의견)
   배달 비귀속의 전환   예를 들어 상기 코드 세그먼트, 피보나 계수의 배달이 비귀속으로 전환된다. 두 개의 국부 변수num1,num2만 추가하면 귀속에 저장해야 하는 데이터를 프로그램 자체에 저장하면 귀속이 비귀속으로 전환할 수 있다.
  이런 전환 사고는 대부분 복잡한 문제의 해결에 응용될 수 있다.만약에 문제가 너무 복잡하면 비귀환으로 일시적으로 해결되지 않는 알고리즘을 사용하고 귀환으로 해결하려면 너무 많은 창고를 소모해야 하거나 문제를 비귀환으로 해결해야 한다고 규정하면 먼저 문제를 귀환의 대사화소한 사유로 귀환 알고리즘을 풀고 그 다음에 귀환 알고리즘을 비귀환 알고리즘으로 바꾸면 된다.  "운전 경력"이 아직 짧고, 경험이 아직 얕으니, 지적해 주시기 바랍니다.결함은 아마도 학식이 부족한 것일 것이고, 배운 것이 다섯 수레에 달하면, 반드시 보충해야 한다.

좋은 웹페이지 즐겨찾기