gpt4 book ai didi

java - 幂和阶乘级数和 说明

转载 作者:行者123 更新时间:2023-12-02 11:36:24 28 4
gpt4 key购买 nike

问题:

SeriesSum 类旨在计算以下系列的总和:

question

类名:SeriesSum

数据成员/实例变量:

x:存储整数

n:存储术语数量

sum:用于存储系列总和的双变量

成员函数:

SeriesSum(int xx, int nn):分配 x=xx 和 n=nn 的构造函数

double findfact(int m) 使用递归返回 m 的阶乘技术。

double findpower(int x, int y) :使用以下方法返回 x 的 y 次方递归技术。

voidcalculate():通过调用计算序列的总和分别是递归函数

void display( ) :显示系列的总和

(a) 指定 SeriesSum 类,给出构造函数的详细信息(int, int),double findfact(int)、double findpower(int, int)、voidcalculate() 和无效显示()。

定义main()函数来创建一个对象并调用相应的函数来启用任务。

代码:

class SeriesSum
{
int x,n;
double sum;
SeriesSum(int xx,int nn)
{ x=xx;
n=nn;
sum=0.0;
}
double findfact(int a)
{ return (a<2)? 1:a*findfact(a-1);
}
double findpower(int a, int b)
{ return (b==0)? 1:a*findpower(a,b-1);
}
void calculate()
{ for(int i=2;i<=n;i+=2)
sum += findpower(x,i)/findfact(i-1);
}
void display()
{ System.out.println("sum="+ sum);
}
static void main()
{ SeriesSum obj = new SeriesSum(3,8);
obj.calculate();
obj.display();
}
}

我的问题:

我在理解时遇到问题,当 i= 任何奇数时(这里以 3 为例),那么通过 findfact 的值是 (i-1)=2 那么我如何得到奇数阶乘,例如3!

任何帮助或指导将不胜感激。

可选:

如果您能以某种方式解释 findpower 和 findfactorial 中发生的递归,那将会有很大帮助。

最佳答案

仔细看看循环。 i 从 2 开始,每次迭代都会增加 2,因此它永远不会是奇数。它对应于 x 的连续幂,每个幂除以 i -1 的阶乘(为奇数)。

至于findfact中的递归,您只需手动解开前几次调用即可了解其工作原理:

findfact(a) = a * findfact(a -1) 
= a * (a - 1) * findfact(a -2)
= a * (a - 1) * (a - 2) * findfact(a - 3)
...
= a * (a - 1) * (a - 2) * ... * 2 * findfact(1)
= a * (a - 1) * (a - 2) * ... * 2 * 1
= a!*

同样的推理也适用于 findpower

顺便说一句,虽然递归可能有助于教学目的,但对于计算阶乘或幂来说,递归是一个糟糕的主意。

关于java - 幂和阶乘级数和 说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48909034/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com