求1+2+3+...+n,要求不能使用乘除法,for,while,if,else,switch,case等关键字以及条件判断语句
方法一:利用构造函数和静态数据成员
- #include <iostream>
- using namespace std;
- 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 solution_Sum(int n)
- {
- Temp::Reset();
- Temp *a=new Temp[n];
- delete []a;
- a=0;
- return Temp::GetSum();
- }
- int main()
- {
- cout<<solution_Sum(100)<<endl;
- return 0;
- }
方法二:利用虚函数
- #include <iostream>
- using namespace std;
- class A;
- A* Array[2];
- class A
- {
- public:
- virtual int Sum(int n)
- {
- return 0;
- }
- };
- class B:public A
- {
- public:
- virtual int Sum(int n)
- {
- return Array[!!n]->Sum(n-1)+n;
- }
- };
- int solution2_Sum(int n)
- {
- A a;
- B b;
- Array[0]=&a;
- Array[1]=&b;
- int value=Array[1]->Sum(n);
- return value;
- }
- int main()
- {
- cout<<solution2_Sum(100)<<endl;
- return 0;
- }
利用函数指针
- #include <iostream>
- using namespace std;
- typedef int (*fun)(int);
- int solution_f1(int i)
- {
- return 0;
- }
- int solution_f2(int i)
- {
- fun f[2]={solution_f1, solution_f2};
- return i+f[!!i](i-1);
- }
- void main()
- {
- cout<<solution_f2(100)<<endl;
- }
三。利用&&的短路特性
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int add_fun(int n, int &sum)
- {
- n && add_fun(n-1, sum);
- return (sum+=n);
- }
- int main()
- {
- int sum=0;
- int n=100;
- printf("1+2+3+...+n=%d\n",add_fun(n, sum));
- return 0;
- }
求1+2+3+...+n,要求不能使用乘除法,for,while,if,else,switch,case等关键字以及条件判断语句相关推荐
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)
求1+2+3+-+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C) 文章目录 求1+2+3+...+n,要求不能使用乘除法.for ...
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). //利用构造函数求解 /*class Temp{ pub ...
- 【OJ - 基础数学】求1+2+3+...+n(不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句)
文章目录 OJ - 求1+2+3+...+n 解题思路 OJ - 求1+2+3+-+n 题目难度:中等 OJ链接:求1+2+3+-+n__牛客网 (nowcoder.com) 题目描述: 求1+2+3 ...
- (不带头结点的)单链表增删查改,逆置单链表(两种方法),求两个单链表的第一个公共结点,合并两个单链表,单循环链表中判断第一个入环点,约瑟夫环
补充了每个算法的基本思想,并且画了思路图,源代码都经过调试成功 1.SlistNode.c文件 (1) (不带头结点的)单链表增删查改 #include "SlistNode.h" ...
- 求质数算法的N种境界[1] - 试除法和初级筛法
★引子 前天,俺在<俺的招聘经验[4]:通过笔试答题能看出啥?>一文,以"求质数"作为例子,介绍了一些考察应聘者的经验.由于本文没有政治敏感内容,顺便就转贴到俺在CSD ...
- 求质数算法的 N 种境界[1] - 试除法和初级筛法
★引子 前天,俺在<俺的招聘经验[4]:通过笔试答题能看出啥?>一文,以"求质数"作为例子,介绍了一些考察应聘者的经验.由于本文没有政治敏感内容,顺便就转贴到俺在 CS ...
- (转)求质数算法的N种境界[1] - 试除法和初级筛法
★引子 前天,俺在<俺的招聘经验[4]:通过笔试答题能看出啥?>一文,以"求质数"作为例子,介绍了一些考察应聘者的经验.由于本文没有政治敏感内容,顺便就转贴到俺在CSD ...
- 编写函数求两个整数 a 和 b 之间的较大值。要求不能使用if, while, switch, for, ?: 以 及任何的比较语句。...
本题要求不能使用if, while, switch, for, ?: 以 及任何的比较语句,也就是要求我们不能用常规的方法来判断两个数的大小. 那么按照以往的方法,要判断两个数的大小,应该要将两个数进 ...
- oracle查找clob中的值,Oracle 查找带有CLOB字段的所有表
myBatis的一对多查询,主要利用resultMap实现一次查询多个结果集 日常开发中有这中场景,一个用户有多个角色,一个角色又有多个菜单,想查出一个用户的所有菜单.除了常见的关联查询之外,更使用的 ...
- (剑指Offer)面试题46:求1+2+3+....+n
题目: 求1+2+3+...+n,要求不能使用乘除法,for,while,if,else,switch,case等关键字及条件判断语句(a?b:c). 思路: 1.构造函数 在类中定义静态成员变量N和 ...
最新文章
- android控件之TextView(一)
- Kubenetes — YAML 基本语法
- linux网络培训题目,linux 网络学习问题命令总结
- 设△ABC的内角A,B,C,所对的边分别为a,b,c,且acosB-bcosA=3/5c,则tan(A-B)的最大值为
- 前端学习(1686):前端系列javascript基础面试总结
- .NET并行编程实践(一:.NET并行计算基本介绍、并行循环使用模式)
- 什么是CTS、CLS和CLR
- 2021接力题典1800【数学一】-汤家凤【题目册】
- java调用jrtplib,jrtplib的文档翻译
- Android Studio 使用夜神模拟器查看apk打印日志
- 多模态预训练CLIP模型的强大为例
- 计算机组成原理——加减运算 溢出判断
- 分享一下开女装服装加盟店的赚钱攻略
- 从新手到高手c++全方位学习 pdf + 视频教程 共18章
- 携职教育:四川2022年人力资源管理师考试报名通知
- “云钉一体”战略解读:阿里打通了数字化的“罗马引水桥”
- QSqlQueryModel搭配QTableView使用卡死问题
- stm32---RS485半双工通信
- 一个人的孤独,一群人的狂欢!
- 切换盘符:使用cmd命令行 cd e: 无法切换到E盘