当前位置 : 主页 > 编程语言 > c语言 >

求1+2+3+...+n

来源:互联网 收集:自由互联 发布时间:2023-08-28
求1+2+3+...+n 题目: 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 数据范围: 0n≤200进阶: 空间复杂度 O(1) ,时间复杂度 O (n) 示

求1+2+3+...+n

题目:

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

数据范围: 0<n≤200 进阶: 空间复杂度 O(1) ,时间复杂度O(n)

示例1:

输入:5
返回值:15

示例2:

输入:1
返回值:1

思路一:

根据我们刚学的内部类的方法进行求解,通过调用n次构造函数来计算和,从_i = 1开始计算,每调用一次构造函数_i++一次,一共调用n次构造函数,也就计算出1+2+……+n。

代码一:使用内部类和静态成员变量的方法

#include <unistd.h>
class Solution {
public:
class Sum{
public:
    Sum()
    {
        _sum += _i;
        _i++;
    }
};
    int Sum_Solution(int n) {
        Sum a[n];
        return _sum;
    }
private:
    static int _i;
    static int _sum;
};
int Solution::_i = 1;
int Solution::_sum = 0;

代码二:使用静态成员函数和静态成员变量

class Sum{
public:
    //构造函数
    Sum()
    {
        _sum += _i;
        _i++;
    }
    //对静态成员变量初始化
    static void Init()
    {
        _i = 1;
        _sum = 0;
    }
    //获取成员变量的值
    static int GetSum()
    {
        return _sum;
    }
private:
    static int _i;
    static int _sum;
};
class Solution {
public:
    int Sum_Solution(int n) {
        Sum::Init();
        //Sum a[n];//变长数组
        Sum* p = new Sum[n];
        return Sum::GetSum();
    }
};
//静态成员变量的定义
int Sum::_i = 1;
int Sum::_sum = 0;

时间复杂度:O(1)

空间复杂度:O(N)

上一篇:华为ensp实验——DHCP
下一篇:没有了
网友评论