程序员面试题精选100 题 -求1+2+...+n
来源:互联网 发布:历史非农数据 编辑:程序博客网 时间:2024/05/16 16:05
题目:求 1+2+…+n,要求不能使用乘除法、for、while、if 、else 、switch 、case 等关键字以及条件判断语句(A?B:C )。
分析:通常求1+2+…+n除了用公式 n(n+1)/2 之外,无外乎循环和递归两种思路。由于已经明确限制for 和while的使用,循环已经不能再用了。因此考虑使用递归。但是,递归函数也需要用if语句或者条件判断语句来判断是继续递归下去还是终止递归,但现在题目已经不允许使用这两种语句了。 c语言中逻辑运算符“&&”可以起到选择执行的功能,例如a&&b,当表达式a为假时,表达式b不执行,当a为真时,表达式b才执行。因此可以用逻辑运算符“&&”代替“if”的功能。同样可用逻辑运算符“||”代替“if”的功能。 基于以上思路,代码如下:
分析:通常求1+2+…+n除了用公式 n(n+1)/2 之外,无外乎循环和递归两种思路。由于已经明确限制for 和while的使用,循环已经不能再用了。因此考虑使用递归。但是,递归函数也需要用if语句或者条件判断语句来判断是继续递归下去还是终止递归,但现在题目已经不允许使用这两种语句了。 c语言中逻辑运算符“&&”可以起到选择执行的功能,例如a&&b,当表达式a为假时,表达式b不执行,当a为真时,表达式b才执行。因此可以用逻辑运算符“&&”代替“if”的功能。同样可用逻辑运算符“||”代替“if”的功能。 基于以上思路,代码如下:
// 程序员面试题精选100 题(08) -求1+2+...+n // 题目:求 1+2+…+n,要求不能使用乘除法、for、while、if 、else 、switch 、case 等关键字以// 及条件判断语句(A?B:C )。unsigned int Sum1ToN(unsigned int n){unsigned int sum = 0;// 可用 !n || (sum = Sum1ToN(n - 1) + n); 代替下面这句n && (sum = Sum1ToN(n - 1) + n);// 当n != 0时,递归执行Sum1ToN(n) = Sum1ToN(n - 1) + n,当n == 0时,返回0。return sum;}
欢迎转载,转载请注明出处 http://blog.csdn.net/hugang012070/article/details/8916215。
- 程序员面试题精选100题(08)-求1+2+...+n
- 程序员面试题精选100题(08)-求1+2+...+n
- 程序员面试题精选100题(08)-求1+2+...+n
- 程序员面试题精选100题(08)-求1+2+...+n
- 程序员面试题精选100题(08)-求1+2+...+n[C/C++/C#]
- 程序员面试题精选100题(08)-求1+2+...+n[C/C++/C#]
- 程序员面试题精选100 题 -求1+2+...+n
- 程序员面试题精选100题(08)-求1+2+...+n[C/C++/C#]
- 程序员面试题精选100题(08)-求1+2+...+n[C/C++/C#]
- 程序员面试题精选(8):求1+2+...+n
- 程序员面试题精选100题:求从1到n的正数中1出现的次数
- 程序员面试题精选100题(38)-输出1到最大的N位数
- 程序员面试题精选100题(38)-输出1到最大的N位数[算法]
- 程序员面试题精选100题(38)-输出1到最大的N位数
- 程序员面试题精选100题(38)-输出1到最大的N位数[算法]
- 程序员面试题精选100题(38)-输出1到最大的N位数[算法]
- 程序员面试题精选100题(03)-求子数组的最大和
- 程序员面试题精选100题(11)-求二元查找树的镜像
- java中的匿名内部类总结
- Java基础复习:基本数据类型的包装类
- Hibernate知识清单1--Hibernate 中oracle 主键的自动生成办法
- A. Polo the Penguin and Segments
- 表单验证
- 程序员面试题精选100 题 -求1+2+...+n
- c++程序原理设计与实践----(1)写在前面
- 多线程 - 死锁
- linux修改网卡名
- Oracle基本查询
- UVA 10006
- 75道逻辑思维题
- 数据的排序:(order by)
- 关于PM的几个问题