假设n的值大于0。

一:源程序:

View Code

packageone;publicclassRecursionTest {/***@paramargs*/publicstaticvoidmain(String[] args) {//TODO Auto-generated method stubRecursionTest rt=newRecursionTest();intx=6;inty=2;longresult=rt.getPower(x, y);

System.out.println("The result of"+x+"'s"+y+"times power ="+result);

}privatelonggetPower(intx,inty){if(y==0)return1;if(y==1)returnx;returnx*getPower(x, y-1);//36//return x*getPower(x, --y);//36//return x*getPower(x, y--);//Exception in thread "main" java.lang.StackOverflowError:当应用程序递归太深而发生堆栈溢出时,抛出该错误。}

}

求幂次方的递归实现方法1:

private long getPower(int x, int y){

if(y == 0) return 1;

if(y == 1) return x;

return x*getPower(x, y-1);

}

方法2:

private long getPower(int x, int y){

if(y == 0) return 1;

if(y == 1) return x;

return x*getPower(x, --y);

}

这两种方法应该是一样的,只不过写法不同。

至于下面的方法3:

private long getPower(int x, int y){

if(y == 0) return 1;

if(y == 1) return x;

return x*getPower(x, y--);

}

这种方法会抛出异常:Exception in thread "main" java.lang.StackOverflowError:当应用程序递归太深而发生堆栈溢出时,抛出该错误。

至于到底递归有多深呢?可以用下面的程序查看一下:

View Code

packageone;publicclassRecursionTest {/***@paramargs*/staticlongnum=0;publicstaticvoidmain(String[] args) {//TODO Auto-generated method stubRecursionTest rt=newRecursionTest();intx=6;inty=2;longresult=rt.getPower(x, y);

System.out.println("The result of"+x+"'s"+y+"times power ="+result);

}privatelonggetPower(intx,inty){

num++;

System.out.println("执行方法getPower的次数:"+num);if(y==0)return1;if(y==1)returnx;returnx*getPower(x, y--);

}

}

运行结果:

.......

执行方法getPower的次数:3393

执行方法getPower的次数:3394

执行方法getPower的次数:3395

执行方法getPower的次数:3396

执行方法getPower的次数:3397

执行方法getPower的次数:3398Exception in thread "main" java.lang.StackOverflowError

at sun.nio.cs.ext.DoubleByteEncoder.encodeArrayLoop(Unknown Source)

at sun.nio.cs.ext.DoubleByteEncoder.encodeLoop(Unknown Source)

at java.nio.charset.CharsetEncoder.encode(Unknown Source)

at sun.nio.cs.StreamEncoder.implWrite(Unknown Source)

at sun.nio.cs.StreamEncoder.write(Unknown Source)

at java.io.OutputStreamWriter.write(Unknown Source)

at java.io.BufferedWriter.flushBuffer(Unknown Source)

at java.io.PrintStream.newLine(Unknown Source)

at java.io.PrintStream.println(Unknown Source)

at one.RecursionTest.getPower(RecursionTest.java:24)

at one.RecursionTest.getPower(RecursionTest.java:26)

at one.RecursionTest.getPower(RecursionTest.java:26)

at one.RecursionTest.getPower(RecursionTest.java:26)

........

方法4:据说可以节省运算时间和一半的运算量,我是在网上搜到的。

源程序:

View Code

packageone;publicclassRecursionTest {/***@paramargs*/publicstaticvoidmain(String[] args) {//TODO Auto-generated method stubRecursionTest rt=newRecursionTest();intx=6;inty=2;longresult=rt.getPower(x, y);

System.out.println("The result of"+x+"'s"+y+"times power ="+result);

}privatelonggetPower(intn,intm){assertm>=0;if(m==0)return1;if(m==1)returnn;longtemp=getPower(n,m/2);returnm%2==0?temp*temp: temp*temp*n;

}

}

方法4的参考出处:http://shenyu.iteye.com/blog/192063

java 求次方_Java递归例子——求x的y幂次方相关推荐

  1. Java递归例子——求x的y幂次方

    假设n的值大于0. 一:源程序: View Code package one; public class RecursionTest { /** * @param args */ public sta ...

  2. java 交集_Java大集合求交集的方法比较

    两个List集合求交集想必学过Java的都知道用系统自带的retainAll()方法,但是在数据量比较大时,这个方法效率并不高,利用空余时间研究了几种数据量较大时求两个集合交集的办法.本文主要研究了J ...

  3. Java降落伞_Java 小例子:轮询淘汰 | 学步园

    一架飞机快要掉了,上面有 20 个人,但是只有 3 包降落伞.于是 20 个人凑成一圈,每数到第 7 个,就将他踢下去.--最后三包降落伞将落在哪几个人手里? 下面是示例代码.编写过程的录像在这里下载 ...

  4. java开方_java程序,求开方的详细代码

    importjava.util.Scanner;publicclassno5{publicstaticvoidmain(String[]args){Scannerinput=newScanner(Sy ...

  5. Java中求一个数的幂次方

    Java中求 m 的 n 次方不能使用 m^n,可使用 Math.pow(m, n) 来求m的n次方,求得结果为浮点类型.

  6. java逻辑值_java、 若x = 5,y = 10,则x y和x = y的逻辑值分别为 和 。...

    int x = 5, y = 10;System.out.println(x=y); x 以下程序段的输出62616964757a686964616fe4b893e5b19e3133336337373 ...

  7. 月份java题_Java基础50道经典练习题(14)——求日期

    package com.homework.test; import java.util.*; /* [程序 14 求日期] 题目:输入某年某月某日,判断这一天是这一年的第几天? 程序分析:以 3 月 ...

  8. java css网页布局实例_java代码例子

    JAVA 类名.方法名(这里面写的是什么)能不能写个代要是类名直接调用的方法,那这个方法就是静态的(static)方法,是不用new出新对象实例就可以直接调用的方法.看下面例子: class A{ p ...

  9. java如何实现e的次方_Java中怎样怎样算出求函数的幂次方?

    展开全部 java中通常进行数学运算的东西都在Math类中,求函数的幂次方就是Math类中的pow方法:public static double pow(double a, double b), 返回 ...

最新文章

  1. mysql删除过期文件_关于保留最新文件或清除过期文件的简单总结
  2. 推荐个Spring Boot实现的开源公众号管理系统,当学习案例也不错!
  3. 源码分享,仿英雄联盟对战游戏!
  4. springboot事物注解不生效_springboot事务不生效的几种解决方案
  5. java+io+scanner_Java知识点总结(JavaIO- Scanner类 )
  6. 小强的HTML5移动开发之路(32)—— JavaScript回顾7
  7. HBase API 创建表
  8. 【F2FS LFS SSR】华为如何打造智能终端的有趣灵魂?(上)
  9. numpy数组拼接方法介绍
  10. js月份的计算公式_JavaScript getMonth() 方法
  11. 蛇哥开局两星机器人视频_腾讯内容开放平台
  12. Anntec ZKUXFT XT2 FGPA卡DPDK使用方法
  13. AnimationEvent 'XXX' has no receiver!
  14. 一文通俗搞懂线性无关特征向量个数≤特征值重数
  15. 基于SHCAN智能仪表的ECU检测系统ETest的开发
  16. MT8183核心板 MTK8183处理器规格参数
  17. css 导航栏下划线跟随效果,默认第一个li为选中状态
  18. 杰里芯片之高电平开关机(触摸IC)
  19. 马克斯-普朗克计算机科学研究所,GAMES Webinar 2018-38期 | 陈仁杰(德国马克斯普朗克计算机研究所)...
  20. C语言将分数转为小数

热门文章

  1. 在Java中将二进制数转化成十进制数
  2. 字节跳动三场技术面+HR面,掌握这些知识点再也不怕面试通不过!
  3. js - 数学运算(取整,取余)
  4. 算法工程师也有35岁危机吗?
  5. PHP:include包含文件局部引入全局变量失效的作用域问题
  6. 大数据高级开发工程师——Spark学习笔记(9)
  7. 计算机毕业设计Java出彩校园信息交流平台(源码+系统+mysql数据库+lw文档)
  8. iphone 程购买实现
  9. mfc利用SQL、DAO调用access数据库
  10. 每天学习写论文——Day24 光说不练假把式,毕设就是第一步