在这个问题中,我们得到一个整数值 N。我们的任务是创建一个程序来查找第 n 个 Hermite 数。 Hermite Number is a number 是当有 0 个参数时Hermite nu
顺晟科技
2021-08-28 09:38:39
201
在这个问题中,我们得到一个整数值n。我们的任务是创建一个程序来寻找第n个埃尔米特数。
埃尔米特数是一个数,是当参数为0时埃尔米特数的值。
第N个埃尔米特数是HN=(-2) * (N - 1) * H(N-2)
基础值是H0=1和H0=0。
埃尔米特序列是1,0,-2,0,12,0,-120,0,1680,0。
让我们举个例子来理解这个问题。
投入
N=7
输出结果
0
投入
N=6
输出结果
-120
解决办法
解决这个问题的一个简单方法是使用埃尔米特数公式。这是通过递归实现的,我们可以找到第n项。
程序来说明我们的解决方案的工作,
例子
#包含iostream
使用命名空间标准;
int calcNHermiteNumber(int N){ 0
if (N==0)
返回1;
if (N % 2==1)
返回0;
其他
return-2 *(N-1)* calcNHermiteNumber(N-2);
}
int main(){ 0
int N=10
第N个埃尔米特数是卡尔纳埃尔米特数;
返回0;
}
输出结果
第十个隐士号是-30240
有效方法
解决这个问题的有效方法是使用公式。我们可以用递推公式推导出通式。
这里,如果n的值是奇数,埃尔米特数是0。
如果n的值是偶数,它们将是公式定义的某个值。
HN=((-1)(N/2)) * (2(N/2) ) * (N-1)!
(N-1)!是半阶乘,计算公式为(n-1)*(n-3)*.3*1.
程序来说明我们的解决方案的工作,
例子
#包含iostream
#包括数学。h
使用命名空间标准;
int calcsemfact(int n){ 0
int FactVal=1;
for(int I=1;I=n;I=I 2){ 0
factVal *=I;
}
返回factVal
}
int calcNHermiteNumber(int n){ 0
if (n % 2==1)
返回0;
int HermiteNumber=(幂(2,n/2))* calcsemfact(n-1);
if ((n/2) % 2==1)
HermiteNumber *=-1;
返回HermiteNumber
}
int main(){ 0
int N=10
第N个埃尔米特数是卡尔纳埃尔米特数;
返回0;
}
输出结果
第十个隐士号是-30240