zoukankan      html  css  js  c++  java
  • 求1+2+3+....+n

    求1+2+3+...+n,要求不能使用乘除法,for,while,if,else,switch,case等关键字及条件判断语句(a?b:c)。

    1、构造函数

    在类中定义静态成员变量N和sum,在构造函数中++N,sum+=N;如此一来,创建n个该类型的实例,就会调用n次构造函数,对应的静态变量也就随着更新。

    #include <iostream>
    using namespace std;
    
    class temp
    {
    public:
        temp() {++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 temp::n=0;
    unsigned int temp::sum=0;
    
    unsigned int sum_solution(unsigned int n)
    {
        temp::reset();
        temp *a=new temp[n];
        delete []a;
        a=NULL;
        return temp::getsum();
    }
    
    int main()
    {
        cout << sum_solution(100) << endl;
        return 0;
    }

    2、函数指针

    在纯C语言中,不能使用虚函数,此时可以使用函数指针来模拟。

    typedef unsigned int (*fun)(unsigned int);
    unsigned int solution3(unsigned int)
    {
        return 0;
    }
    unsigned int sum_solution3(unsigned int)
    {
        static fun f[2]={solution3,sum_solution3};
        return n+f[!!n](n-1);
    }
  • 相关阅读:
    Day02
    Day01
    Insecure CAPTCHA (不安全的验证码)
    物理机burp抓虚拟机包
    File Upload(文件上传)
    File Inclusion(文件包含)
    CSRF(跨站请求伪造)
    Command Injection命令注入
    [Unity 2D] Unity CharacterController2D
    [Unity UGUI]卡卡西大法
  • 原文地址:https://www.cnblogs.com/home123/p/7260942.html
Copyright © 2011-2022 走看看