> 백엔드 개발 > C++ > 본문

C++를 사용하여 Pell 번호 찾기

WBOY
풀어 주다: 2023-08-30 18:09:06
앞으로
965명이 탐색했습니다.

C++를 사용하여 Pell 번호 찾기

주어진 문제에서 정수 n이 주어졌고 해당 위치의 주문 번호인 Pn을 찾아야 합니다. 이제 우리가 알고 있듯이 철자 번호는 다음 공식에 의해 주어진 수열의 일부입니다 - Pn = 2*Pn-1 + Pn-2

처음 두 개의 시작 숫자 - P 0 = 0 and P1 = 1

Finding Method Solution

이제 이 문제를 재귀와 반복이라는 두 가지 방법으로 해결하겠습니다.

Recursive Method

이 공식에서는 Pell Number 공식을 재귀적으로 적용하고 n번 반복합니다.

Example

#include <iostream>

using namespace std;
int pell(int n) {
   if(n <= 2)
      return n;
   return 2*pell(n-1) + pell(n-2);
}
int main() {
   int n = 6; // given n
   cout << pell(n) <<"\n"; // Pell number at that position.
   return 0;
}
로그인 후 복사

Output

70
로그인 후 복사
로그인 후 복사

위 코드 설명

이 접근 방식에서는 n이 2보다 작거나 같을 때까지 pell(n-1) && pell(n-2)을 호출하여 재귀를 사용합니다. 2까지의 철자가 주어진 숫자와 동일하다는 것을 안다. 위 프로그램의 전체 시간 복잡도는 O(N)이며, 여기서 N은 주어진 숫자입니다.

반복 방법

이 방법에서는 위와 동일한 수식을 사용하지만 재귀 함수 대신 for 루프를 사용하여 숫자를 계산합니다.

Example

#include <iostream>

using namespace std;
int main() {
   int n = 6; // given n.
   int p0 = 0; // initial value of pn-2.
   int p1 = 1; // initial value of pn-1.
   int pn; // our answer.

   if(n <= 2) // if n <= 2 we print n.
      cout << n <<"\n";
   else {
      for(int i = 2; i <= n; i++) { // we are going to find from the second number till n.

         pn = 2*p1 + p0;
         p0 = p1; // pn-1 becomes pn-2 for new i.
         p1 = pn; // pn becomes pn-1 for new i.
      }

      cout << pn << "\n";
   }
   return 0;
}
로그인 후 복사

Output

70
로그인 후 복사
로그인 후 복사

위 코드 설명

주어진 프로그램에서 우리는 2에서 n으로 이동하고 단순히 pn-2의 값을 pn-1로 업데이트하여 pn-1의 값을 변경합니다. n에 도달할 때까지 값은 pn으로 업데이트됩니다.

결론

이 글에서는 재귀와 반복을 사용하여 N번째 주문 번호를 찾는 문제를 해결했습니다. 우리는 또한 이 문제를 해결하기 위한 C++ 프로그램과 이 문제를 해결하는 완전한 방법(정상적이고 효율적인)을 배웠습니다. C, Java, Python 및 기타 언어와 같은 다른 언어로 동일한 프로그램을 작성할 수 있습니다.

위 내용은 C++를 사용하여 Pell 번호 찾기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿