如何编写一个可以用Java计算功能的函数.没有循环

Mo *_*tic 3 java repeat exponent

我一直在尝试用Java编写一个简单的函数,它可以在不使用循环的情况下计算第n个幂的数字.
然后我发现Math.pow(a,b)类......或者方法仍然无法区分这两个与理论不太相关的东西.所以我写了这个..

public static void main(String[] args) {

    int a = 2;

    int b = 31;

    System.out.println(Math.pow(a, b));

    }
Run Code Online (Sandbox Code Playgroud)

然后我想制作我自己的Math.pow而不使用循环我希望它看起来比循环更简单,比如使用某种类型的重复我做了很多研究直到我遇到了commons-lang3包我试过使用StringUtils.repeat
到目前为止,我认为这是语法: -

public static String repeat(String str, int repeat)
    StringUtils.repeat("ab", 2);
Run Code Online (Sandbox Code Playgroud)

我过去24小时或更长时间遇到的问题是StringUtils.repeat(String str,int 2); 重复字符串而不是输出或数字或计算. 我能做些什么来克服这个问题,还是有其他更好的方法来创建计算能力的函数?不使用循环或Math.pow

这可能很有趣,但我花了很多时间才发现StringUtils.repeat只重复字符串,这就是我试图克服它的方式.这有帮助

 public static int repeat(int cal, int repeat){
     cal = 2+2;
     int result = StringUtils.repeat(cal,2);
     return result;
}  
Run Code Online (Sandbox Code Playgroud)

我可以不使用递归可能是这样的事情

public static RepeatThis(String a)
{
     System.out.println(a);
     RepeatThis(a);
} 
Run Code Online (Sandbox Code Playgroud)

只是尝试理解部门中的java感谢您的所有评论,即使存在语法错误,只要逻辑被理解为对我有好处 :)

小智 11

O(Log(n))复杂度的另一种实现

public static long pow(long base, long exp){        
    if(exp ==0){
        return 1;
    }
    if(exp ==1){
        return base;
    }

    if(exp % 2 == 0){
        long half = pow(base, exp/2);
        return half * half;
    }else{
        long half = pow(base, (exp -1)/2);
        return base * half * half;
    }       
}
Run Code Online (Sandbox Code Playgroud)


use*_*339 7

试试递归:

int pow(int base, int power){
    if(power == 0) return 1;
    return base * pow(base, --power);
}
Run Code Online (Sandbox Code Playgroud)


Gna*_*van 5

处理复杂度为 O(log(n)) 的 +/- 指数的函数。

double power(double x, int n){
 if(n==0)
  return 1;

  if(n<0){
      x = 1.0/x;
      n = -n;
  }
 double ret = power(x,n/2);
 ret = ret * ret;
 if(n%2!=0)
   ret = ret * x;
 return ret;
Run Code Online (Sandbox Code Playgroud)

}