首页 > 其他分享 >求1+2+3+...+n

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

时间:2023-06-27 18:01:04浏览次数:35  
标签:int Sum Solution static +...+ sum 构造函数

求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)

标签:int,Sum,Solution,static,+...+,sum,构造函数
From: https://blog.51cto.com/u_15562309/6564796

相关文章

  • Python花式编程:6种方法计算1!+2!+...+n!
    问题描述:给定任意正整数n,计算1!+2!+3!+...+n!的值。 阅读原文......
  • 【剑指offer】- 求1+2+3+...+n -47/67
    1.题目描述求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。2.题目分析对于这种求1+2+3+…+n的题,我们可以采取3中方法第一种:直接利用等差数列的思想来进行求和return(1+n)*n/2;第二种:利用迭代的思想进行求和intres=......
  • 实现n!+(n-1)!+...+1!
    首先,设定变量intp=1;inti=0;intsum=0;intx=0;其次,设计阶乘的函数intjc(intp,inti){for(;i!=1;i-=1)p*=i;returnp;};最后,设计主函数intm......
  • 求1+2!+3!+...+20!的和
    题目题目:求1+2!+3!+...+20!的和。算法分析总共两个部分组成,一部分是对每个数通过《利用递归方法求阶乘》中介绍的递归算法求阶乘,一部分是累加求和。显然,第一部分就是直......
  • 每日算法之求1+2+3+...+n
    JZ64求1+2+3+...+n题目求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。方法位运算思路算法实现从1连加到n,......
  • 题目:求1!+2!+3!+...+10!
    答案:#include<stdio.h>intmain(){inti,z,sum;z=1;sum=0;for(i=1;i<=10i++){z=z*i;sum=sum+z;}printf("%d",sum);return0;}1.对于n的阶乘由于上一......
  • 计算1+2!+3!+...+n!的和
    计算1+2!+3!+...+n!的和Code点击查看代码#include<iostream>#include<vector>usingnamespacestd;typedefvector<int>VI; //动态数组intn;VIadd(VI&A,VI......
  • 剑指offer——求1+2+3+...+n的和
    题目描述:求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)思路1:使用构造函数,创建n个类对象,利用构造函数进行求和计算clas......
  • 求 (1) + (1+2) + (1+2+3) + (1+2+3+4) + ... + (1+2+3+...+100)的结果
    publicclassEext{ publicstaticvoidmain(String[]args){ //求(1)+(1+2)+(1+2+3)+(1+2+3+4)+...+(1+2+3+...+100)的结果 //思路 //一共有100项相加 ......