zoukankan      html  css  js  c++  java
  • LeetCode 326 Power of Three(3的幂)(递归、Log函数)

    翻译

    给定一个整型数,写一个函数决定它是否是3的幂(翻译可能不太合适……
    
    跟进:
    你能否够不用不论什么循环或递归来完毕。

    原文

    Given an integer, write a function to determine if it is a power of three.
    
    Follow up:
    Could you do it without using any loop / recursion?

    分析

    题意我事实上不是满懂,比方说12究竟可不能够呢?还是说仅仅有:3、9、27、81这样的才行呢?先写个简单的递归试试看吧。

    bool isPowerOfThree(int n) {
        if (n == 1) return true;
        else if (n == 0) return false;
        else if (n % 3 == 0)
            return isPowerOfThree(n / 3);
        else return false;
    }

    提交成功了,那么自己用12作为參数来试试呢,发现返回false。那么就能够断定题意是上面我说的另外一种了。

    是否还记得log函数呢。之前有一道题遇到过。所以这次一下就想到了……

    logn3

    假设以12来计算的话:

    log123=2.26186

    int(log123)=2

    log123int(log123)=0.26186

    所以直接推断结果是否为0就好了……

    bool isPowerOfThree(int n) {
        double logAns= log(n) / log(3);             
        return (logAns- int(logAns) == 0) ? true : false;
    }

    然而这段代码提交后发现仍然是错误的,243在上面的代码中竟然是false。打断点看看应该是因为精度问题,所以继续改改。

    logn3=logn10log310

    所以代码就出来了……

    代码

    class Solution {
    public:
        bool isPowerOfThree(int n) {
            double logAns = log10(n) / log10(3);
            return (logAns - int(logAns) == 0) ?

    true : false; } };

  • 相关阅读:
    linux修改键盘按键
    linux添加一个已经存在用户到一个用户组
    centos-6更新yum源(163)
    Fedora 19安装以后的优化
    centos永久性修改系统时间显示格式
    smb.conf文件详解
    Centos上部署文件共享
    centos上mysql开启远程访问
    centos安装mysql后默认密码修改
    centos上mysql的一种安装方式
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7365759.html
Copyright © 2011-2022 走看看