求前n项和 , 要求不用乘除,循环,判断 (三种方法)
来源:互联网 发布:人脸比对系统源码 编辑:程序博客网 时间:2024/05/16 08:08
题目:
题目:求 1+2+ … +n,要求不能使用乘除法、 for、 while 、 if、 else 、 switch、 case 等关键字以及条件判断语句( A?B:C)。
方法1:用递归替代循环,结合短路特性退出递归
针对循环可以用递归来替代,而针对递归的结束可以用n&&(fun())来代替,因为一旦n等于0则不会执行后面的代码了
int addtion(int n){ int ans = n; ans &&(ans += addtion( n-1)); return ans;}
方法二:利用类的构造函数,创建一个类对象数组,构造函数就会被调用多次,以此代替循环
class Temp{ public: Temp() { ++N; Sum += N; } static void Reset() { N = 0; Sum = 0; } static int GetSum() { return Sum; } private: static int N; static int Sum;};//类外初始化静态变量int Temp::N = 0;int Temp::Sum = 0;int solution1_Sum(int n){ Temp::Reset(); Temp *a = newTemp[n]; delete []a; a = nullptr;//清理指针指向内存后,指针一定要指向nullptr才行 return Temp::GetSum();}
第三种方法:公式n*(n+1)/2,但是有乘除法,实现乘法可以用sizeof多维数组,除法除以2用位移很容易
class Solution {public: int Sum_Solution(int n) { bool a[n][n+1]; return sizeof(a)>>1;//这个牛,但只是GCC的特性呀,标准C++并不支持的,比如vs就不能编译的 }};
0 0
- 求前n项和 , 要求不用乘除,循环,判断 (三种方法)
- 不使用循环和乘除算前n项和
- 求1+2……+n,不能用循环和乘除和条件判断语句
- 剑指offer 面试题46 求 1+2+3+...+n (不使用乘除以及条件判断语句求前 n 项正整数的和)
- Java实现1+2+...+n,不用乘除符号,不用if等条件判断,不用for等循环
- 46-从1加到n 不用乘除和循环语句
- 循环-25. 求给定序列前N项和之三(15)
- 循环-25. 求给定序列前N项和之三(15)
- 循环-25. 求给定序列前N项和之三(15)
- 循环-25. 求给定序列前N项和之三(15)
- 循环-25. 求给定序列前N项和之三(15)
- 循环-25. 求给定序列前N项和之三
- 三种方法实现如何不用循环实现1+...+n?
- 求1+2+。。。+n,不用乘除,for、while、if、else、switch、case等关键字及条件判断语句
- 46 - 不使用 乘除、循环和判断 语句实现 1+...+n
- 循环-10. 求序列前N项和(15)
- 循环-10. 求序列前N项和(15)
- 循环-21. 求交错序列前N项和(15)
- sklearn GMM
- [leetcode] 46. Permutations
- Xlib和GLX
- 学校oj显示在线用户数超过了序列号允许。您需要购买或升级您的序列号
- 【Leetcode】Ransom Note
- 求前n项和 , 要求不用乘除,循环,判断 (三种方法)
- 为了经济不顾安全?
- TIM_OCIdleState
- 勾股定理一日一证连载69
- 2016.08.11【初中部 NOIP提高组 】模拟赛C题目
- 占座
- 2016.08.11【初中部 NOIP提高组 】模拟赛C题解
- Java 单例模式的安全实现方式
- 使用GeoGebra绘制三角形的外接圆和内切圆