Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java π的近似_Java_Algorithm - Fatal编程技术网

Java π的近似

Java π的近似,java,algorithm,Java,Algorithm,我试着用下面的等式来解这个积。 我觉得这是一个递归问题,但我不知道基本情况在哪里? 否则,我应该将平方根项简化为简化版本并使用迭代方法吗? 停止条件是当z达到1:z(1)=sqrt(2)时。那么,你的函数z似乎是递归的,你的基本情况应该是z(0)或z(1) 所以你应该有 public static double z(double i) { if(i < 1) { //error } else if(i == 1) {

我试着用下面的等式来解这个积。 我觉得这是一个递归问题,但我不知道基本情况在哪里? 否则,我应该将平方根项简化为简化版本并使用迭代方法吗?


停止条件是当z达到1:z(1)=sqrt(2)时。

那么,你的函数
z
似乎是递归的,你的基本情况应该是z(0)或z(1)

所以你应该有

public static double z(double i)
{
    if(i < 1)
    {
        //error
    }
    else if(i == 1)
    {
        return C;  // where C is some arbitrary constant, your base case: Z(1);
    }
    else
    {
        return sqrt(2 + z(i-1));
    }

}
公共静态双z(双i)
{
if(i<1)
{
//错误
}
else如果(i==1)
{
返回C;//其中C是任意常数,基本情况为:Z(1);
}
其他的
{
返回sqrt(2+z(i-1));
}
}

不是downvoter,但是您尝试了什么?到目前为止您做了什么,请发布您的代码我只是想知道解决问题的方法:)对于递归方法,基本情况是什么?例如,不需要递归。从
a=sqrt(2)
开始,然后
a=sqrt(2+a)
。以循环的方式进行。@ajb我也像你说的那样考虑过减少它:)你是说sqrt(2)/2?对,但家庭作业是他的工作。(至少C的值还有待解决:-)使用double作为索引是一种灾难。使用double作为计数器,无法保证准确地命中
i==1
(由于众所周知的浮点运算限制)。它显然应该是一个整数。是的,你可以确信这一点,假设
i
的起始值小于
2**50
左右。这个算法总是精确的。但是你是对的,对应该包含整数的值使用double是一种不好的做法,而且在大多数情况下,在处理浮点数学时,你不能指望
=
。很好的一点,尽管在遇到StackOverflower错误之前,我可以检查到i=62795(双关语)