Java确定重复函数的限制
在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
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,它不可能返回。看我的例子。