총괄: 귀속 알고리즘의 일반적인 사고방식
역귀환 알고리즘
** 프로그램이 직접 또는 간접적으로 자신의 프로그래밍 기교를 호출하는 것을 귀속 알고리즘이라고 하고 직접 또는 간접적으로 자신의 함수를 호출하는 것을 귀속 함수라고 한다.그것은 통상적으로 하나의 대형 복잡한 문제를 층층이 원래의 문제와 비슷한 규모가 비교적 작은 문제로 바꾸어 해답을 구한다.
귀속 문제의 기본 사상: 문제 층층이 분석하는 관건: 귀속 정의와 귀속 종지 조건의 귀속 정의를 찾아낸다. 문제를 경계 조건으로 전환시키는 규칙의 귀속 종지 조건: 문제의 가장 간단한 상황을 묘사하고 그 자체는 귀속 정의를 사용하지 않는다.
예: 1~100의 귀속 fn(n)=n+fn(n-1) 종료 조건을 구합니다. fn(1)=1 코드:function fn(n){If(n<=1)Return1;Else returnn+fn(n-1);}
예: 최대 공인식 (유클리드 알고리즘) 귀속을 구합니다: gcd(m, n) = gcd(n, m%n) 종료 조건: gcd(m, 0) = m 코드: gcd(m, n)//m>n {If(n==0)return(m),elsereturn gcd(n, m m%n);
예제
폴란드 표현식의 역효과: (2+3) 4-> * + 2 3 4 예를 들어 * + 11 12 + 24 35 -> (24 + 35) (11 + 12) = 1357 atof 함수는char형을 부동점수atof()로 변환할 수 있다. (): 더블 atof(const char *str) 사고방식: 문자열 그룹에 입력하고 두 가지 상황으로 나눈다. 1, 기호, 2,숫자(문자열 수조에 입력할 때 빈칸이 있으면 멈춘다)char수조는 c[0]라는 위치만 있고 입력한 부동점수는 몇 개의 위치를 차지하고 귀속을 시작합니다. 첫 번째 상황, 기호라면 다음 귀속을 끌어냅니다. 두 번째 상황, 숫자라면 직접return난점: 한 번에 진 다음에 고려할 수 없고 입력을 하면서 계산해야 합니다.
#include
#include
#include
#include
using namespace std;
char a[20];
double f()
{
cin>>a;
switch(a[0])
{
case'+':return f()+f();
case'-':return f()-f();
case'*':return f()*f();
case'/':return f()/f();
default:return atof(a);
}
}
int main()
{
printf("%f
",f());
return 0;
}
귀속 총결산은 귀속 호출을 통해 전체 문제를 층층이 처리 방법이 비슷한 하위 문제로 분해한다.회고를 통해 귀속 관계에 따라 서브문제의 해를 전체 문제의 해로 정리한다.서브문제를 분해할 때 현재 문제에 여러 가지 상황을 고려해야 한다면 하나하나 열거해야 한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.