Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.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_Function - Fatal编程技术网

Java确定重复函数的限制

Java确定重复函数的限制,java,function,Java,Function,在Java中,我有一个接口,它接受一个double并返回一个double,就像一个数学函数一样。现在,我有一个替身开始。我想确定,如果我反复重复这个函数,结果是否会收敛到无穷大(+/-)。例如,我可以使用函数n=n^2。这样,从2开始,顺序如下: 2, 4, 8, 16, 32, 64... 0.1, 0.01, 0.001, 0.0001... 并收敛到无穷远。但是,如果我从0.1开始,则顺序如下: 2, 4, 8, 16, 32, 64... 0.1, 0.01, 0.001, 0.0

在Java中,我有一个接口,它接受一个
double
并返回一个
double
,就像一个数学函数一样。现在,我有一个替身开始。我想确定,如果我反复重复这个函数,结果是否会收敛到无穷大(
+/-
)。例如,我可以使用函数
n=n^2
。这样,从2开始,顺序如下:

2, 4, 8, 16, 32, 64...
0.1, 0.01, 0.001, 0.0001...
并收敛到无穷远。但是,如果我从0.1开始,则顺序如下:

2, 4, 8, 16, 32, 64...
0.1, 0.01, 0.001, 0.0001...
不会收敛到无穷大

我想要一个方法,它接受一个
函数
和一个
双精度
,并返回一个布尔值,以确定重复此函数是否会导致无穷大或负无穷大

更新代码:

boolean goesToInfinity(Function fn, double dbl) {
    double last = dbl;
    for (int i = 0; i < 25; i++) { // repeats 25 times
        dbl = fn.apply(dbl);
        if (Math.abs(dbl) < Math.abs(last)) return false;
        last = dbl;
    }
    return true;
}
布尔goesto无穷大(函数fn,双dbl){
double last=dbl;
对于(int i=0;i<25;i++){//重复25次
dbl=fn.apply(dbl);
if(Math.abs(dbl)

但是,如果函数为
x->x-1
dbl
为1,则返回false,因为值为
1,0,-1…
,代码看到
1,0
并返回false。

这是不可能的。对于您想要编写的此函数的任何实现,我可以向其传递一个我自己的函数,该函数将破坏您的实现

见和

一个可能破坏您的实现的函数的示例是

如果费马的最后一个定理是真的,那么x=>无穷大

否则,返回x=>0


由于Fermat的最后一个定理尚未得到证明,所以您的实现无法解决我的示例函数。因此,您编写的任何实现都不能是通用的。

这是不可能的。对于您想要编写的此函数的任何实现,我可以向其传递一个我自己的函数,该函数将破坏您的实现

见和

一个可能破坏您的实现的函数的示例是

如果费马的最后一个定理是真的,那么x=>无穷大

否则,返回x=>0


由于Fermat的最后一个定理尚未得到证明,所以您的实现无法解决我的示例函数。因此,您编写的任何实现都不可能是通用的。

@Jashaszun如果数字不是无穷大,代码不会停止;相反,它将继续向另一个数字前进。@Jashaszun如果这个数字不是无穷大,代码将不会停止;相反,它将继续朝着另一个数字前进。你不能“破坏实现”。对于任何函数和任何起始输入,它都返回true或false。@Jamesmith,它不可能返回。看我的例子,你不能“破坏实现”。对于任何函数和任何起始输入,它都返回true或false。@Jamesmith,它不可能返回。看我的例子。