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; } };

  • 相关阅读:
    持续集成-禅道
    nohup.out 日志切分
    Flannel 介绍及使用场景
    【Unity游戏开发】初探Unity动画优化
    fastHttp服务端处理请求的过程
    PHPExcel导出文件代码实现
    PHPExcel 1.8
    CKfinder 安装与使用
    Ckeditor的配置
    Ckeditor的使用
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7365759.html
Copyright © 2011-2022 走看看