一道面试题:求1+2+…+n,不使用乘除法、for、while、if 、else、switch、case 等关键字
来源:互联网 发布:java线程 终止 编辑:程序博客网 时间:2024/04/27 17:38
题目:求1+2+…+n,
C#不支持逗号表达式,不能用上面的第一种方法:
要求不能使用乘除法、for、while、if 、else、switch、case 等关键字以及条件判断语句(A?B:C)
下面提出三种方式方法用C++实现:
#include <iostream>using namespace std;//通过逻辑运算符的短路来处理int Calc1(int n){ int value = 0; return n < 0 || (value = n + Calc1(n - 1)), value;}//通过除0异常来处理,需要在编译命令行中启用/EHa(启用C++异常,但有SEH异常)//gcc下不知道什么情况,未测试int Calc2(int n){ try { return n % n + n + Calc2(n - 1); } catch (...) { return 0; }}//通过n>0作为数组的索引来处理void Calc3_Last(int sum, int value, int *result){ *result = sum;}void Calc3_Body(int sum, int value, int *result){ void (*func[])(int, int, int *) = {Calc3_Last, Calc3_Body}; func[value > 0](sum + value, value - 1, result);}int Calc3(int n){ int result; Calc3_Body(0, n, &result); return result;}//主函数int main(){ cout<<Calc1(100)<<endl; cout<<Calc2(100)<<endl; cout<<Calc3(100)<<endl; return 0;}
C#不支持逗号表达式,不能用上面的第一种方法:
using System;namespace Slx.TestSumN_cs{ static class Program { //利用除0异常来处理 public static int Calc2(int n) { try { return n % n + n + Calc2(n - 1); } catch (System.Exception) { return 0; } } //通过n>0作为数组的索引来处理 public delegate void Calc3Delegate(int sum, int n, ref int result); public static void Calc3_Last(int sum, int n, ref int result) { result = sum; } public static void Calc3_Body(int sum, int n, ref int result) { Calc3Delegate[] bodys = {Calc3_Last, Calc3_Body}; bodys[Convert.ToInt32(n > 0)](sum + n, n - 1, ref result); } public static int Calc3(int n) { int result = 0; Calc3_Body(0, n, ref result); return result; } //主函数 public static void Main(string[] args) { Console.WriteLine(Calc2(100)); Console.WriteLine(Calc3(100)); } }}
- 一道面试题:求1+2+…+n,不使用乘除法、for、while、if 、else、switch、case 等关键字
- 求1+2+…+n.要求不能使用乘除法、for、while、if、else、switch、case等关键字
- 求1+2+…+n(要求不能使用乘除法、for、while、if、else、switch、case等关键字)
- 每天学习一算法系列(12) (求1+2+…+n,不能使用乘除法,for、while、if 、else、switch、case 等关键字以及条件判断语句)
- 题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。
- 求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case 等关键字以及条件判断语句
- 求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 等关键字以及条件判断语句
- 题目:求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)
- 《剑指offer》上的一道原题,求1+2+……+n,要求不能使用乘除法,for、while、if、else、switch、case等关键字以及条件判断语句
- 求解1+2+3+...+n,要求不能使用乘除法、while、for、if 、else、switch、case等关键字
- Interview----求 1+2+...+n, 不能用乘除法、for、while if、else、switch、case 等关键字以及条件判断语句 (A?B:C)
- 求1+2+3+...+n,要求不能使用乘除法,for,while,if,else,switch,case等关键字以及条件判断语句
- 求1+2+3+...+n,要求不能使用乘除法,for,while,if,else,switch,case等关键字以及条件判断语句
- 求1+2+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A? B:C)
- Android Fragment详解
- Oracle Parallel Execution(并行执行)
- Linux内核通知链notifier
- DB2的导入导出实例
- Android程序检测网络是否可用
- 一道面试题:求1+2+…+n,不使用乘除法、for、while、if 、else、switch、case 等关键字
- Android开发:后台异步任务之AsyncTask实现
- 曾经做的一个JS小游戏——《Battle City》
- UNIX环境高级编程——线程同步之互斥锁、读写锁和条件变量(小结)
- 单例设计模式
- 基于MTD的NAND驱动开发(一) .
- Eclipse安装SVN插件,从Google Code上下载开源项目
- PHP抓取页面的几种方式
- 基于MTD的NAND驱动开发(二) .