每天进步一点点【2019.8.25】

2019-08-25  本文已影响0人  天使的流浪

一、pow(x,n)【leetcode 50】

题目描述:实现 pow(x,n) ,即计算 x 的 n 次幂函数
输入

2.00000, 10

输出
1024.00000
分析

使用直接相乘的方法【注意n为负值的情况】

代码:

 public double myPow(double x, int n) {
         boolean flag = true;
         if(n<0){
             flag = false;
             n = -n;
         }
         double res = 1.0;
         while (n-->0) {
             res *= x;
         }
         if(flag) return res;
         else return 1/res;
    }

存在问题:时间复杂度太大【不能通过】

改进思路:使用尾递归来降低时间复杂度;
实现

public double myPow(double x, int n) {
         if(n<0){
             x = 1/x;
             n = -n;
         }
         return fastPow(x,n);
}
public double fastPow(double x, int n) {
         if(n==0) return 1.0;
         double half = fastPow(x, n/2);
         if(n%2==0) return half*half;
         return half*half*x;
 }

二、每日一点心理学

半途效应:
原理:指在激励过程中达到半途时,由于心理因素及环境因素的交互作用而导致的对于目标行为的一种负面影响;;
原因
① 目标选择的合理性;
② 个人的意志力;
避免措施:
① 认真梳理实施耐挫折教育的基本内容;
② 辩证地分析不尽人意之处,在比较中认识挫折;
③ 注意利用榜样的力量进行耐挫折教育;
④ 学会“高目标,小步子”的进攻策略
高尔基: “哪怕是对自己的一点小小的克制,也会使人变得强而有力”

三、每日一句
It's so easy to be careless. It takes courage and character to care.

上一篇 下一篇

猜你喜欢

热点阅读