zoukankan      html  css  js  c++  java
  • 用二分法计算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 + "	" + "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;
    			}
    		}
    	}
    }
    

     运行结果如下:

     

  • 相关阅读:
    C++面试考点
    C++面试考点
    C++11 引用叠加规则和模板参数类型推导规则
    C++11 引用叠加规则和模板参数类型推导规则
    C++11 auto和decltype推导规则
    C++11 auto和decltype推导规则
    RVO和NRVO
    RVO和NRVO
    Strange Bank(找零问题)
    eli和字符串 (牛客假期训练)
  • 原文地址:https://www.cnblogs.com/soulsjie/p/6829451.html
Copyright © 2011-2022 走看看