1. 재귀 적 정의
단순 재귀 자체가 개념을 설명하는 데 사용할 수 있습니다, 예를 들어, 사전, 설명의 각 단어를 설명하기 위해 다른 사전에있는 단어에 의존하는 것입니다. 일반적으로, 컴퓨터의 대부분에서 발생 재귀 문제가 더 작은 하위 규모의 문제 해결에 문제를 분해 한 다음 병합하는 것입니다.
재귀 적 성격
재귀 자연과 하나의 문제, 그들의 대부분은 두 가지 특성을 가지고, 제 1 상태 전이 방정식은 N-, 계승 해결 등의 재발 방정식입니다! = N * (N-1) !, N, N-1 팩토리얼 해결 변환된다의 요인을 해결하는 것이다. 두 번째 기능은 재귀 문제의 클래스를 해결하는 것입니다, 종료 조건, 결과가 있어야
하지 재귀 문제의 크기가 답을 안내 할 수 있습니다 때 충분히 작을 때 단순화 된 종료 조건이있다. 계승을 해결하면 문제가 있었을 때 그는 직접 출력 한 때.
int f(n)
{
if(n==1)//终止条件
{
return 1;
}
else
{
return n*f(n-1);//递归方程
}
}
재귀 가격
재귀 재귀 함수를 반복적으로 호출 될 때 종료 조건에 도달 한 후, 층이 층을 입력 한 다음 층이 층에서, 각 층의 기능의 결과, 연산 결과의 정확성 및 상태를 보장하기 위해 저장되어야 많은 양의 데이터, 점유 시간을 실행 재귀 공간이 아주 무서운 것입니다 할당 된 시스템, 적층되어, 효율이 매우 낮
여기 동적 프로그래밍 알고리즘의 구현에 유사한 재귀하지만, 더 높은 효율을 다시 소개 .
동적 프로그래밍의 본질
낮은 오버 헤드 문제를 해결하기위한 재귀 알고리즘 및 문제 저 가기 내지 해결 동적 프로그래밍 알고리즘, 또한 재귀 알고리즘의 장점에 비해 상태 천이 방정식 방정식과 초기 조건을 필요 동적 프로그래밍 알고리즘은 반복적으로 호출을 필요로하지 않는다 기능은 각 레이어 기능의 상태를 저장할 필요가 없으며, 따라서 시간과 공간이 훨씬 덜 지출해야합니다.
요인 동적 프로그래밍 알고리즘
int f(n)
{
int array[n+1],i;//array[i]表示i的阶乘
array[1]=1;
for(i=2;i<=n;i++)
{
array[n]=n*array[n-1];//状态转移方程
}
return array[n];
}
이 알고리즘, 시간에 관계없이 또는 재귀 알고리즘보다 더 나은 공간입니다. 그러나 몇 가지 문제, 재귀 알고리즘 적은 코드, 더 나은 이해, 하노이의 탑으로, 동적 프로그래밍 알고리즘에 의해 해결하면 시간이 소요에 대한 지금까지 재귀 알고리즘보다뿐만 아니라 어려움 재귀 알고리즘보다 더 실감하지만.
보기의 개인 지점, 우리는 토론, 논문을 환영합니다