Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm số Hermite thứ n trong C ++

Trong bài toán này, chúng ta được cung cấp một giá trị nguyên N. Nhiệm vụ của chúng ta là tạo một chương trình để Tìm số Hermite thứ n.

Số Hermite là một số là giá trị của số hermite khi có 0 đối số.

Nth hermite Number is HN = (-2) * (N - 1) * H(N-2)
The base values are H0 = 1 and H0 = 0.

Trình tự hermite là - 1, 0, -2, 0, 12, 0, -120, 0, 1680, 0….

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào

N = 7

Đầu ra

0

Đầu vào

N = 6

Đầu ra

-120

Phương pháp tiếp cận giải pháp

Một giải pháp đơn giản cho vấn đề là sử dụng công thức cho số hermite. Điều này được thực hiện bằng cách sử dụng đệ quy, chúng ta có thể tìm thấy N th Thời hạn.

Chương trình minh họa hoạt động của giải pháp của chúng tôi,

Ví dụ

#include <iostream>
using namespace std;
int calcNHermiteNumber(int N) {
   if (N == 0)
      return 1;
   if (N % 2 == 1)
      return 0;
   else
      return -2 * (N - 1) * calcNHermiteNumber(N - 2);
}
int main() {
   int N = 10;
   cout<<"The "<<N<<"th hermite Number is "<<calcNHermiteNumber(N);
   return 0;
}

Đầu ra

The 10th hermite Number is -30240

Cách tiếp cận hiệu quả

Một cách tiếp cận hiệu quả để giải quyết vấn đề là sử dụng công thức. Chúng ta có thể suy ra công thức chung bằng công thức đệ quy.

Ở đây, nếu giá trị của N là số lẻ, số hermite là 0.

Nếu giá trị của N là số chẵn, giá trị của chúng sẽ là một số giá trị được xác định bởi công thức,

HN = ( (-1)(N/2)) * ( 2(N/2) ) * (N-1)!!

(N-1) !! Là bán giai thừa được tính bằng (n-1) * (n-3) * ... 3 * 1.

Chương trình minh họa hoạt động của giải pháp của chúng tôi,

Ví dụ

#include <iostream>
#include <math.h>
using namespace std;
int calcSemiFact(int n) {
   int factVal = 1;
   for (int i = 1; i <= n; i = i + 2) {
      factVal *= i;
   }
   return factVal;
}
int calcNHermiteNumber(int n) {
   if (n % 2 == 1)
      return 0;
   int HermiteNumber = (pow(2, n / 2)) * calcSemiFact(n - 1);
   if ((n / 2) % 2 == 1)
      HermiteNumber *= -1;
   return HermiteNumber;
}
int main() {
   int N = 10;
   cout<<"The "<<N<<"th hermite Number is "<<calcNHermiteNumber(N);
   return 0;
}

Đầu ra

The 10th hermite Number is -30240