gpt4 book ai didi

java - 在对数函数中使用递归幂函数,无需 Math.functions

转载 作者:行者123 更新时间:2023-12-01 06:08:12 25 4
gpt4 key购买 nike

就像标题中所说的那样,我遇到的问题是我需要创建自己的电源和日志方法并在我的输入中使用它们。我的幂函数看起来很好,直到我尝试在 loga(b) 函数中使用它。一个问题是我不理解 log 方法中的 for 循环,因为我在类里面复制了该循环以便稍后理解它。另一个问题是我不知道内置的 Math.pow() 是如何工作的,如果我有代码或伪代码,我可以猜测我自己的幂函数有何不同。提前致谢,请放轻松,我对这一切还很陌生。

import java.util.Scanner;

public class Numbers {

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
double i1;
double i2;
System.out.print("type your a:");
i1 = input.nextDouble();
System.out.print("type your b:");
i2 = input.nextDouble();
input.close();
sumRange(i1, i2);
power(i1, i2);
log(i1, i2);
System.out.println("Sum from a to b: " + sumRange(i1, i2) + "\nFibonacci for A: " + fibonacci(i1)
+ "\nFibonacci for B: " + fibonacci(i2) + "\nA^B:" + power(i1, i2) + "\na%b: " + mod(i1, i2)
+ "\nloga (b)" + log(i1, i2));
}

// if I'm honest I don't understand how the log code works exactly,
// what I do know is that this code calculates the correct log
// with Math.pow() function
// My own power function doesn't seem to work and I don't know how the
// MAth.pow()
// function is different from mine
static double log(double i1, double i2) {
double value = 0;
for (double i = 1; i > .001; i /= 10) {
while (!(power(i1, value) > i2)) {
value += i;
}
value -= i;
}
return value;
}

static double power(double i1, double i2) {
if (i2 == 0) {
return 1;
}
if (i2 == 1) {
return i1;
}
// The line below seems to cause problems since used in log(double,
// double) method
return i1 * power(i1, i2 - 1);
}
// I excluded my 3 other methods as they work fine and don't depend on
// each other to work

最佳答案

你的幂方法仅适用于整数i2,否则递归将永远不会终止。

对于非整数i2,您可以在减少到01之间后至少进行一些线性插值。对于大基值 i1 来说这是一个不好的近似,但总比没有好。

    if( 0<=i2 and i2 <=1) return 1+i2*(i1-1);

i2怎么样?

    if( i2 < 0 ) return 1/power(i1,-i2);

Google 搜索“libm/exp.c”,用于 C 标准库中指数的专业实现,有不同的变体,“libm/pow.c”也类似。

关于java - 在对数函数中使用递归幂函数,无需 Math.functions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40527466/

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