用二分法计算a的n次幂<算法分析>
实验目的:
1、复习java编程;
2、掌握二分法的基本原理;
3、掌握使用java程序进行二分法计算a的n次幂。
实验步骤:
1、由用户输入a及n(均为整数);
2、利用二分法完成计算,并将中间结果打印出来。
package erfencimi;
import java.util.Scanner;
public class Power {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//输入a和n数值
System.out.print("请输入 a 的值:");
int a = scanner.nextInt();
System.out.print("请输入 n 的值:");
int n = scanner.nextInt();
int c=0;
System.out.println("a = " + a + "\t" + "n = " + n);
//打印输出二分过程
for(int b=1;b<=n;n=n/2)
{
System.out.println(a + "的" + n + "次方为(第"+c+"次二分):" + function(a, n));
c++;
}
c=c-1;
//二分次数总计
System.out.println("总共进行了" + c + "次二分!");
} //求二分次幂函数
private static long function(int a, int n) {
if(n == 1) { //指数是1时直接返回数字a
return a;
} else {
if(n % 2 == 0) { //如果是偶数次幂直接将指数进行二分
return (int)Math.pow(function(a, n/2), 2);
} else { //如果是奇数次幂将指数减一再进行二分
return (int)Math.pow(function(a, (n-1)/2), 2) * a;
}
}
}
}
运行结果如下:
用二分法计算a的n次幂<算法分析>的更多相关文章
- C++:补齐函数编写递归函数计算x的y次幂(hhhh函数 !头疼!)
编写递归函数计算x的y次幂,在主程序中输入非零整数x和整数y,输出求幂的结果(保留两位小数).考虑y为负数和0的情况. #include<iostream> #include<iom ...
- 计算5的n次幂html代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 计算4的n次幂html代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 计算3的n次幂htm代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 计算2的n次幂htm代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Hdu1097(计算a的b次幂最后一位数值)
#include <stdio.h> #include <math.h> int main() { int Num1,Num2; while(scanf("%d %d ...
- HDU 5651 计算回文串个数问题(有重复的全排列、乘法逆元、费马小定理)
原题: http://acm.hdu.edu.cn/showproblem.php?pid=5651 很容易看出来的是,如果一个字符串中,多于一个字母出现奇数次,则该字符串无法形成回文串,因为不能删减 ...
- 2014 Super Training #7 F Power of Fibonacci --数学+逆元+快速幂
原题:ZOJ 3774 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3774 --------------------- ...
- POJ2778 DNA Sequence(AC自动机+矩阵快速幂)
题目给m个病毒串,问不包含病毒串的长度n的DNA片段有几个. 感觉这题好神,看了好久的题解. 所有病毒串构造一个AC自动机,这个AC自动机可以看作一张有向图,图上的每个顶点就是Trie树上的结点,每个 ...
随机推荐
- js中判断数据类型的方法 typeof
<input type="text" onblur="demo(this)"/><br/> <input type="n ...
- 转 mysql oracle 指定rand随机数范围
若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...
- Oracle中的序列
序列是什么? 序列是用来生成唯一.连续的整数的数据库对象.序列通常用来自动生成主键或唯一键的值.序列可以按升序排列,也可以按照降序排列. 其实Oracle中的序列和MySQL中的自增长差不多一个意思. ...
- mui 时间日期控件(浏览器上无法查看,在手机端可以点击)
<head> <meta charset="utf-8"> <meta name="viewport" content=" ...
- Scala基础篇-函数式编程的重要特性
1.纯函数 表示函数无副作用(状态变化). 2.引用透明性 表示对相同输入,总是得到相同输出. 3.函数是一等公民 函数与变量.对象.类是同一等级.表示可以把函数当做参数传入另一个函数,或者作为函数的 ...
- 掌握Spark机器学习库-09.3-kmeans算法实现分类
数据集 iris.data 数据集概览 代码 package org.apache.spark.examples.hust.hml.examplesforml import org.apache.s ...
- Java.io.ObjectOutputStream.writeObject()方法实例
java.io.ObjectOutputStream.writeObject(Object obj) 方法将指定对象写入ObjectOutputStream.该对象的类,类的签名,以及类及其所有超类型 ...
- 【译】x86程序员手册40-10.5初始化的例子
10.5 Initialization Example初始化的例子 译注:本来想把这个例子全部注释完,但由于对intel汇编实不熟悉,有太多的伪指令,本人也是免强看懂,所以就不再做翻译了. $TITL ...
- 迅为八核cortex a53开发板android/linux/Ubuntu系统
详情请点击了解:http://www.topeetobard.com 店铺:https://arm-board.taobao.com 核心板: 提供1G和2G内存版本,全机器焊接,杜绝手工,批量无忧. ...
- H5 canvas 之乱画
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...