18910140161

求C中的第n个埃尔米特数

顺晟科技

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

我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航