计算机无法实现x的y次方,由
X
y
=(x*x)
(y/2)
来实现,依据此法,利用递归实现
x的y次方,在y为奇数的时候,提出一个x出来相乘,如下:
public class Power {
static int xNum;
public static void main(String[] args) throws IOException {
int x,y;
int count = 0;
x = insert();
y = insert();
xNum = x;
power(x,y,count);
}
private static void power(int x, int y, int count) {
System.out.println("x值为:"+x+" y值为:"+y);
if(y==1)
{
if(count>0){
for(int i=1;i<=count;i++){
x = x*xNum;
}
}
System.out.println("所求值为:"+x);
}
if(y>1)
{
//y为偶数的时候
if(y%2==0)
{ System.out.println(">>>>");
power(x*x,y/2,count);
}
//y为奇数的时候
if(y%2==1)
{System.out.println("<<<<");
power(x*x,(y-1)/2,count+1);
}
}
}
private static int insert() throws IOException {
InputStreamReader in = new InputStreamReader(System.in);
BufferedReader buffer = new BufferedReader(in);
String s = buffer.readLine();
return Integer.parseInt(s);
}
}
分享到:
相关推荐
递归应用,用于实现汉诺塔问题,源于经典故事! 主要在于递归调用!
二叉树的递归算法:建立二叉树、遍历二叉树.doc 多多指教
二分法 解函数 c++语言 c语言 递归 数根
二叉树的递归算法:建立二叉树、遍历二叉树
ackman函数的递归和非递归,学习数据结构的素材,非递归是使用堆栈实现的。
编求x的y次方的递归函数.cbp
可实现: 输入相应元素,用先序创建二叉树(无元素处用“#”) 递归先序遍历二叉树: 递归中序遍历二叉树: 递归后序遍历二叉树: 非递归先序遍历二叉树: 非递归中序遍历二叉树: 非递归后序遍历二叉树: ...
/// 一列数的规则如下: 1、1、2、3、5、8、13、21、34求第30位数是多少, 用递归算法实现。(C#语言) /// /// <param name=pos></param> /// <returns></returns> public int GetNumberAtPos(int pos) { if(pos==0|...
递归程序设计方法(简称递归)是指函数直接或者间接调用自己的现象。递归是一种有趣的程序设计方法,往往区区几行代码就能达到...本资源是递归程序设计详细介绍与实现,简单明了比较系统化,有需要的朋友可以下载学习。
java 用递归实现字符串反转 java 用递归实现字符串反转
ACM常用到的算法:用递归求次方。数学里用的也比较多
C语言递归实现逆序程序 C语言初学者必会
斐波那契数列: 在数学上它以递归的方式进行定义,指这样的一个数列:0、1、1、2、3、5、8、13、21、34、55、89、144……,即前两个数为分别为0和1...本例为LabVIEW中编写递归VI实现求解斐波那契数列Fib(n)中第n项的值
理解递归的概念。 掌握设计有效算法的分治策略。 通过下面的范例学习分治策略设计技巧。 大整数乘法; Strassen矩阵乘法; 棋盘覆盖; 合并排序 循环赛日程表 递归算法:直接或者间接调用自身的算法称为递归算法。 ...
汉诺塔的非递归实现,c++实现的,很简单,只有50多行,从递归的汉诺塔改编而来,将原来递归时的参数状态保存在栈中,入栈代替递归,出栈代替递归返回。
八皇后递归及非递归实现源码; 八皇后递归及非递归实现源码
摘要:C#源码,随书源码,递归算法,排列组合 C#递归算法:0~N位数的排列组合,组合的数字在0~5之间,输入需要组合的位数,点击“计算”按钮,程序会列出所有符合条件的数列组合。一个学习C#递归算法的好范例。
递归实现回文判断
快速选择非递归与递归算法实现
c++实现的关于递归实现逆序字符串,有需要的可以下载