蓝桥学院2019算法题2.20

news/2024/7/6 6:28:47

题5:设计一个高效的求a的n次幂的算法

算法分析:

1、可以用for循环实现 a*a*a*a*...

2、可以用递归实现 res*pow1(a,n-ex)

 1 package recursion;
 2 
 3 /**
 4  * @author zsh
 5  * @company wlgzs
 6  * @create 2019-02-18 16:30
 7  * @Describe 设计一个高效的求a的n次幂的算法
 8  */
 9 public class Main8 {
10 
11     /**
12      * 循环法求a的n次幂,复杂度O(n)
13      * @param a
14      * @param n
15      * @return 结果
16      */
17     static int pow0(int a,int n){
18         int res = 1;
19         for (int i = 0; i < n; i++) {
20             res = res*a;
21         }
22         return res;
23     }
24 
25     /**
26      * 优化后求a的n次幂
27      * @param a
28      * @param n
29      * @return 结果
30      */
31     static int pow1(int a,int n){
32         if (n == 0){
33             return 1;
34         }
35         int res = a;
36         //指数
37         int ex = 1;
38         while ( 2*ex <= n){
39             res = res*res;
40             ex = ex*2;
41         }
42         //差n-ex次方没有乘到结果上去
43         return res*pow1(a,n-ex);
44     }
45 
46     public static void main(String[] args) {
47         System.out.println(pow0(2,15));
48         System.out.println(pow1(2,15));
49     }
50 }

 

转载于:https://www.cnblogs.com/zsh-blogs/p/10396467.html


http://www.niftyadmin.cn/n/4541432.html

相关文章

JS之预编译

今天有幸获得腾讯的电话面试&#xff0c;不幸的是面试非常惨&#xff0c;但是从中认识到自己的不足和找到日后该努力的方向&#xff0c;就拿面试中的关于js的预编译来说吧&#xff0c;小编都不知道是啥&#xff0c;面试完后赶紧查资料&#xff0c;写总结。 首先javascript是解…

elasticsearch查询语句总结

query 和 filter 的区别请看&#xff1a;https://www.cnblogs.com/bainianminguo/articles/10396956.html Filter DSL term 过滤 term主要用于精确匹配哪些值&#xff0c;比如数字&#xff0c;日期&#xff0c;布尔值或 not_analyzed 的字符串(未经分析的文本数据类型)&#x…

java 8中map中compute,computeIfAbsent,computeIfPresent方法介绍

2019独角兽企业重金招聘Python工程师标准>>> compute&#xff08;计算&#xff09; default V compute(K key,BiFunction<? super K, ? super V, ? extends V> remappingFunction) 指定的key值在map中的value值进行操作&#xff0c; 如果key存在&#xff0…

JS之事件委托

前段时间去了慕课网面试前端开发&#xff0c;面试官当时问了我一个关于事件委托的问题&#xff0c;当时一脸蒙逼&#xff0c;心里在想什么鬼&#xff0c;好像都没听过啊&#xff0c;后来回来后赶紧查了一下资料&#xff0c;才知道原来事件委托是js中的经典问题啊&#xff0c;当…

理解 Redis(9) - Publish Subscribe 消息订阅

在窗口1开通一个名为 redis 的通道: 127.0.0.1:6379> SUBSCRIBE redis Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "redis" 3) (integer) 1 从窗口2传入信息: 127.0.0.1:6379> PUBLISH redis hi (integer) 1 此时窗口1会收到这…

前端挑战之js编程题(1)

题目要求&#xff1a; 查找两个节点的最近的一个共同的父节点&#xff0c;可以包括节点自身。 思路&#xff1a; 看到题目要求&#xff0c;首先应该想到有三种情况&#xff0c;有两个节点&#xff0c;dom1和dom2&#xff1a; 1、dom1为dom2的最近父节点&#xff0c;判断dom1是否…

PDF文件怎么拆分,PDF拆分技巧

PDF文件怎么拆分呢&#xff1f;现在的PDF文件都会有很多页面&#xff0c;我们想要将这个页面拆分成单个的PDF文件改怎么操作呢&#xff1f;不要着急&#xff0c;下面小编就使用迅捷PDF编辑器为大家分享一下PDF拆分的技巧。  使用软件&#xff1a;迅捷PDF编辑器  软件的操作…

前端挑战之js编程题(2)

题目要求&#xff1a; 实现对一个现有的数组去除重复元素&#xff0c;并返回去除重复元素的数组。 方案&#xff1a; var arr1[1,2,3,1,4,5,3,6] arr2[] for(var i0,lenarr1.length;i<len;i){ if(arr2.indexOf(arr[i])<0){ arr2.push(arr[i]); } } console.log(arr2); 题…