এই সমস্যায়, আমাদের একটি পূর্ণসংখ্যা N দেওয়া আছে। আমাদের কাজ হল Nতম হারমাইট সংখ্যা বের করার প্রোগ্রাম লিখা।
হারমাইট সংখ্যা হল হারমাইট পলিনোমিয়ালের মান যখন আর্গুমেন্ট ০।
Nতম হারমাইট সংখ্যা HN = (-2) × (N - 1) × H(N-2) বেস ভ্যালু: H₀ = 1 এবং H₁ = 0।
হারমাইট সিকোয়েন্স: 1, 0, -2, 0, 12, 0, -120, 0, 1680, 0…
উদাহরণ
ইনপুট ১
N = 7
আউটপুট ১
0
ইনপুট ২
N = 6
আউটপুট ২
-120
সমাধানের পদ্ধতি
এই সমস্যার সহজ সমাধান হল হারমাইট সংখ্যার সূত্র ব্যবহার করা। এটি রিকার্সন দিয়ে করা যায়, আমরা Nতম টার্ম বের করতে পারি।
প্রোগ্রাম উদাহরণ (রিকারসিভ পদ্ধতি)
#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;
}
আউটপুট
The 10th hermite Number is -30240
দক্ষ পদ্ধতি (সাধারণ সূত্র)
এই সমস্যা সমাধানের একটি দক্ষ পদ্ধতি হল সাধারণ সূত্র ব্যবহার করা। আমরা রিকারসিভ সূত্র থেকে সাধারণ সূত্র বের করতে পারি।
এখানে, যদি N বিজোড় হয়, হারমাইট সংখ্যা ০।
যদি N জোড় হয়, তবে মান হবে সূত্র অনুযায়ী:
HN = (-1)^(N/2) × 2^(N/2) × (N-1)!!
এখানে (N-1)!! হল সেমি-ফ্যাক্টোরিয়াল যা ক্যালকুলেট হয় (n-1)×(n-3)×...×3×1।
প্রোগ্রাম উদাহরণ (দক্ষ পদ্ধতি)
#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;
}
আউটপুট
The 10th hermite Number is -30240