用二分法计算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树上的结点,每个 ...
随机推荐
- CF916E
Codeforces 916E 简要题解Description Description 有一棵n个点的树,每个节点上有一个权值wi,最开始根为1号点.现在有3种类型的操作: 1 root, 表示将根设 ...
- [Usaco2005 Jan]Sumsets 求和
Description Farmer John commanded his cows to search for different sets of numbers that sum to a giv ...
- [ZPG TEST 114] 阿狸的英文名【水题】
1. 阿狸的英文名 阿狸最近想起一个英文名,于是他在网上查了很多个名字.他发现一些名字可以由两个不同的名字各取一部分得来,例如John(约翰)的前缀 “John”和Robinson(鲁滨逊) ...
- XOR and Favorite Number Codeforces - 617E || [CQOI2018]异或序列
https://www.luogu.org/problemnew/show/P4462 http://codeforces.com/problemset/problem/617/E 这个是莫队裸题了吧 ...
- MAT使用入门
原文出处: 高建武 (Granker,@高爷) MAT简介 MAT(Memory Analyzer Tool),一个基于Eclipse的内存分析工具,是一个快速.功能丰富的JAVA heap分析工具, ...
- Spark学习之Spark Streaming(9)
Spark学习之Spark Streaming(9) 1. Spark Streaming允许用户使用一套和批处理非常接近的API来编写流式计算应用,这就可以大量重用批处理应用的技术甚至代码. 2. ...
- web安全后渗透--XSS平台搭建及使用
xss平台搭建 1.申请一个云主机来进行建站:149.28.xx.xx 2.安装lnmp: wget http://soft.vpser.net/lnmp/lnmp1.5.tar.gz -cO ln ...
- 关于Android软键盘把布局顶上去的问题
首先说下我的需求:布局最上面是一个bar,有左上角返回按钮和标题,bar下面是一个ScrollView,里面有各种TextView和EditText, 点击下面的EditText时,不希望软键盘把ba ...
- [Windows Server 2008] PHP安装Memcached
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:Windows ...
- MySQL 中去重 distinct 用法
在使用MySQL时,有时需要查询出某个字段不重复的记录,这时可以使用mysql提供的distinct这个关键字来过滤重复的记录,但是实际中我们往往用distinct来返回不重复字段的条数(count( ...