(번외) 귀속에 대한 재정리
1585 단어 귀속
면접관이 나에게 이런 질문을 할 때까지:
int digui(int a)
{
return digui(a-1)+digui(a-2);
}
이런 코드의 작성 방식이 맞습니까?
만약에 대신급이라면 한눈에 말할 수 있을 거예요. 그런데 저는 두 달 동안 디자이너와 비슷한 훈련을 한 후에 모두!잊어버리다됐다!
또한 당시에 너무 착실하게 배우지 못했기 때문에 코드를 작성하는 데 있어서 적게 쓰는 것이 좋았다. 배웠지만 애써 잊어버렸다.
이 코드를 지금 분석하면 두 가지 문제가 존재한다.
1. 순환에서 벗어날 수 있는 조건이 없다
2, 이 귀속 연산 문제
우선 귀속 은 사순환적 일 수 없으며, 조건 은 반드시 없어서는 안 된다
이 방면을 수정한 후 코드는
int digui(int a)
{
if (// )
{
return 1;
}
else
{
return digui(a - 1) + digui(a - 2);
}
}
두 번째 문제는 그것의 연산 순서다.
귀속에 대해 나는 수열과 차이가 많지 않다고 생각한다. 등차 또는 등비수열이고 위의 이 귀속은 피보나치 수열과 유사한 모델로 F(n)=F(n-1)+F(n-2)의 규칙에 부합된다. 이것은 주제 밖의 말이다.
이 함수에 대해서만 연산 수순은 먼저digui(a-1)의 값을 구한 다음에digui(a-2)의 값을 구한다. 마지막에 덧붙이면 귀속의 순서가 서로 영향을 주지 않는다.