zoukankan      html  css  js  c++  java
  • 剑指offer——求1+2+3+....+n!

    题目描述:求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

    class Solution {
    public:
        //递归方法
    	int Sum_Solution(int n) {
    		int ans = n;
    		ans && (ans += Sum_Solution(n - 1));
    		return ans;
    	}
            //非递归方法
            int Sum_Solution2(int n) {
                bool a[n][n+1];
                return sizeof(a)>>1;
            }
    };
    //比较新颖的想法
    typedef int (*func)( int );
    class Solution {
    public:
        static int Solution1(int n )
            { return 0;}
     
     
    static int Sum_Solution(int n) {
         
         
            static func f[2] = {Solution1,Sum_Solution};
            return n+f[!!n](n-1);
     
     
        }
         
    };
    class Tmp
    {
    public:
        Tmp()
        {
            ++N;
            Sum+=N;
        }
        static void Reset(){N = 0; Sum = 0;}
        static unsigned int GetSum() {return Sum;}
    private:
        static unsigned int N ;
        static unsigned int Sum; 
    };
    unsigned int Tmp::N = 0;
    unsigned int Tmp::Sum = 0;
    class Solution
    {
    public:
        friend class Tmp;
    public:
        int Sum_Solution(int n)
        {
            Tmp::Reset();
            Tmp *a = new Tmp[n];
            delete[] a;
            a = NULL;
            return Tmp::GetSum();
        }
     
    };
    天上我才必有用,千金散尽还复来!
  • 相关阅读:
    字符串切片
    格式化输出
    原生链+对象冒充组合继承模式
    对象冒充继承和原生链实现继承的方法和问题
    xlwt使用
    xlrd使用
    pip安装插件库
    第一天入驻博客园
    2-2ARP概念
    1-14常用的应用层协议及应用
  • 原文地址:https://www.cnblogs.com/lutaishi/p/13436292.html
Copyright © 2011-2022 走看看