在math.pow中使用递归来计算Java的功效

尼萨尔·帕特尔(Nisarg Patel)

如果n> 0并且n为偶数,则X ^ n =(X ^ n / 2)^ 2

如果n> 0并且n为奇数,则X ^ n = X *(X ^ n / 2)^ 2

有人可以给我这两个公式的Java代码吗?我尝试使用它,但是我的答案始终是无穷大。

这是我的代码

代码:

import java.lang.*;
public class power4
{
  double ans;
  public double setpower(double x, double n) {
    if (n == 0)
      return 1;
    else if (n % 2 == 0)
      return Math.pow(setpower(x, n/2),2);
    else
      return x * (Math.pow(setpower(x, n/2),2));
  }
}

驱动类别:

 public class powerTester
 {
   public static void main(String[] args) {
     power4 test4 = new power4();

     System.out.print("2^0 -- ");
     System.out.print(test4.setpower(2,0)+"    ");

     System.out.println();
     System.out.print("2^1 -- ");
     System.out.print(test4.setpower(2,1)+"    ");

     System.out.println();
     System.out.print("2^2 -- ");
     System.out.print(test4.setpower(2,2)+"    ");

     System.out.println();
     System.out.print("2^3 -- ");
     System.out.print(test4.setpower(2,3)+"    ");

     System.out.println();
     System.out.print("2^4 -- ");
     System.out.print(test4.setpower(2,4)+"   ");

     System.out.println();
     System.out.print("2^5 -- ");
     System.out.print(test4.setpower(2,5)+"   ");
  }
}

输出:

Welcome to DrJava.  Working directory is C:\Users\Nisarg\Desktop
> run powerTester
2^0 -- 1.0    
2^1 -- Infinity    
2^2 -- Infinity    
2^3 -- Infinity    
2^4 -- Infinity   
2^5 -- Infinity   > 
达伍德·伊本·卡里姆(Dawood ibn Kareem)

这个公式

X^n = X * ( X^ (n / 2))^2

依赖于是n / 2奇数的整数除法。换句话说,它不要求n ÷ 2,但实际上(n - 1) ÷ 2通过具有n作为一个double不是整数,你可以将这个部门的工作究竟,而不是作为一个整数除法。

这样的结果是,仅当n / 2达到浮点精度的极限时,该递归才会终止,而此时您X一次又一次地相乘因此,结果是非常大的数目。太大不能存储在一个double

要解决此问题,请将setpower方法的第一行更改

public double setpower(double x, int n)

强制整数除法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用 Math.Pow 计算每月贷款

来自分类Dev

如何使用 Math.pow 计算 bmi

来自分类Dev

在 Java 中使用 BigDecimal 手动 Math.pow

来自分类Dev

Java Math.abs与Math.pow

来自分类Dev

使用Math.pow()函数

来自分类Dev

使用Math.Pow函数

来自分类Dev

如何使用math.pow()在Expression类中进行计算?

来自分类Dev

Java到Swift-如何在Xcode 6中使用math.pow和math.exp

来自分类Dev

如何在JSP中使用Math.pow?

来自分类Dev

在Microsoft Solver Foundation中使用Math.Pow

来自分类Dev

如何使用Math.PI和Math.pow

来自分类Dev

在Java中使用Math.pow确定立方体的表面积以及“跳过”的困难

来自分类Dev

Java Math库计算日志

来自分类Dev

如何正确使用math.pow java函数?

来自分类Dev

如何正确使用math.pow java函数?

来自分类Dev

Java Math.pow无法正常工作

来自分类Dev

Java的Math.pow返回1错误

来自分类Dev

Java:Math.pow()返回零

来自分类Dev

Java Math.pow无法正常工作

来自分类Dev

不确定如何使用Math.pow()

来自分类Dev

不确定如何使用Math.pow()

来自分类Dev

Java Math 类型转换

来自分类Dev

charAt()和Math.pow()

来自分类Dev

Math.pow的JavaScript实现

来自分类Dev

inputVal上的Math.pow()

来自分类Dev

使用Math.Floor

来自分类Dev

Math.Pow()与Math.Exp()C#.Net

来自分类Dev

比较Math.Log和Math.Pow

来自分类Dev

Java Math.pow(x,2.0)与Math.pow(x,2.0000001)性能