47、求1+2+3+...+n
来源:互联网 发布:问道辅助软件 编辑:程序博客网 时间:2024/06/05 09:30
题目描述:求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
Ⅰ 用构造函数求解
思路:利用构造n个某类的对象,即执行n次该类的构造函数实现循环。
tips:关于静态成员和静态函数
1、类的静态成员不属于任何一个对象,是这个类的所有对象共有的;
2、类的静态成员可以初始化,只能在类外进行,即类的静态成员不能在类体内进行初始化和赋值;
类外初始化格式:(这里不声明static了)
数据类型类名::静态数据成员名=初值
3、静态函数成员必须通过对象名来访问非静态数据成员,也就是说静态函数是不可以直接访问非静态成员的。
代码:
class temp{ public: //用构造函数实现循环 temp(){ N++; sum += N; } //以下两个函数定义成static是为了在Solution类中方便调用 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;class Solution {public: int Sum_Solution(int n) { temp::reset(); temp *a = new temp[n];//创建n个temp类对象 delete []a; a = NULL;//删除的指针置空以防出现迷途指针的问题 //以下这两种返回方式都可以,只不过用temp::sum的话需要考虑temp类的私有成员的问题 //return temp::sum; return temp::getsum(); }};
Ⅱ 递归调用
思路:递归调用实现叠加,但是需要解决的问题就是递归结束的条件,这里采用逻辑与的短路特性来实现。
代码:
class Solution {public: int Sum_Solution(int n) { int ans = n; //当ans等于0,即这一次传进来的n等于0时,&&后面的式子就不会执行了 ans && (ans += Sum_Solution(n-1)); return ans; }};
阅读全文
0 0
- 【47】3求1+2+3+...+n
- 【47】2求1+2+3+...+n
- 【47】求1+2+3+...+n
- 47、求1+2+3+...+n
- 1、求n!;2、求1!+2!+3!+......+n!之和
- 求1+2+3+....n
- 求1+2+3+...+n
- 求1+2+3+...+n
- 求1+2+3+...+n
- 求1+2+3+...+n
- 求1+2+3+。。。+N
- 求1+2+3+...+n
- 求1+2+3+...+n
- 求1+2+3+...+n
- 求1+2+3+...+n
- 求1+2+3+...+n
- 求1+2+3+...+n
- 求1+2+3+...+n
- 解决mysql添加用户Field 'ssl_cipher' doesn't have a default value的错误
- C语言单链表的一些操作
- RaspberryPi(树莓派)从U盘启动
- 放置式new
- 大数据-孩子学习成绩分析
- 47、求1+2+3+...+n
- 原生JS基础之拖拽效果
- 开发者论坛运营方法
- java poi 读写操作excel
- [Unity&Animator]拖动Animator面板的问题
- 加载和连接
- Android自定义View之分类和核心函数
- tgt + rbd + multiph
- @Query注解的用法(Spring Data JPA)