C/C++学习(一)题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。
来源:互联网 发布:淘宝的销售金额 编辑:程序博客网 时间:2024/05/21 06:18
解题分析:这道题没有多少实际意义,因为在软件开发中不会有这么变态的限制。但这道题却能有效地考查发散思维能力,而发散思维能力能反映出对编程相关技术理解的深刻程度。
通常求1+2+…+n除了用公式n(n+1)/2之外,无外乎循环和递归两种思路。由于已经明确限制for和while的使用,循环已经不能再用了。同样,递归函数也需要用if语句或者条件判断语句来判断是继续递归下去还是终止递归,但现在题目已经不允许使用这两种语句了。
方法一:利用C++定义一个类,我们new一含有n个这种类型元素的数组,那么该类的构造函数将确定会被调用n次。我们可以将需要执行的代码放到构造函数里,那么创建对象时就会调用构造函数;
class Sum
{
private:
static int N;
public:
Sum()
{
++N;
sum+=N;
}
static int sum;
};
int Sum::N = 0;
int Sum::sum = 0;
int main()
{
Sum *s = new Sum[100];
delete []s;
cout << s->sum <<endl;
return 0;
}
方法二:递归的思想;
利用递归1
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;}//对n两次取反
};
int main()
{
A a;
B b;
array[0] = &a;
array[1] = &b;
int value = array[1]->sum(10);
cout << value <<endl;
}
//利用递归2
template <int n>struct Sum1
{
enum Value{N = Sum1<n-1>::N + n};
};
template <> struct Sum1<1>
{
enum Value{N = 1};
};
int name()
{
Sum1<10> sum;
cout << sum1.Value <<endl;
return 0;
}
1 0
- 题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。
- 题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。
- C/C++学习(一)题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。
- 求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)
- 求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)
- 求1+2+…+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+...+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、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。Java实现
- 求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、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、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、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)
- 大型分布式网站架构设计与实践 第一章《面向服务的体系架构(SOA)》1.1基于TCP协议的RPC
- 普通非校园网用户如何使用IPV6连接网络?[已失效]
- OpenJudge_P8207 和为给定数
- 注解方式实现Spring的aop
- 设计模式 - 创建型模式 - 单例模式
- C/C++学习(一)题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。
- GitLab 使用163邮箱发送邮件
- 【OJ二分06】月度开销
- Local declaration of 'XXX' hides instance variable
- Deep learning论文笔记一:ImageNet Classification with Deep Convolutional Neural Networks
- [android] 优化UI卡顿现象
- kettle用xstart打开报错failed to write core dump & the crash happend outside 解决办法
- poj1700Crossing River【贪心】
- iOS开发:获取文件路径总结