不用if/while等操作实现
2011-10-11 09:59
113 查看
求1+2+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句
题目比较变态。起初不愿意多想,只知道模板的发现是由于某人发现在编译打出的错误信息计算出了值,于是才有后面的故事。第一想法的静态模板编译递归计算。
后来看到一个比较好的,是用表达式作为防御性编程——作为递归的条件(无判断),比较巧妙,于是sharing一下。
题目比较变态。起初不愿意多想,只知道模板的发现是由于某人发现在编译打出的错误信息计算出了值,于是才有后面的故事。第一想法的静态模板编译递归计算。
后来看到一个比较好的,是用表达式作为防御性编程——作为递归的条件(无判断),比较巧妙,于是sharing一下。
#include <stdio.h> int sum(int n) { int tmp = 0; (n)&&(tmp = sum(n-1)); return n+tmp; } int main() { printf("%d\n",sum(10)); return 0; }
相关文章推荐
- 在不使用if,while,do...while,for,switch,?:等操作,实现函数void printLess(int k),返回小于k的所有整数
- js算法一则:不用if。。while。。for等循环和判断语句实现1+2+3+...+n的和
- 不用if、while、for、switch等语句及系统函数,实现求两数中的最大数的函数
- 使用VC++调用C#封装的DLL库实现Excel文件的操作(不用安装office软件环境)
- 多线程操作中为什么使用while而不是if来做判断状态是否就绪
- c语言中不用while,for,do-while实现循环
- python基础语法(数据类型、if、while、for、break、continue、IO操作)
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。Java实现
- 计算1-n的和(不用for, while, goto, if, else, switch, case和三目运算符, 也不用乘除法)---利用多态性
- PHP 不用求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)
- 70个shell常用操作、 shell编程控制结构:expr、let、for、while、until、shift、if、case、break、continue、函数、select
- 不用下标操作实现字符串回文判断
- 不用乘除及取模操作实现两个整数的相除
- 《面试题精选》09.不用for,while,if等关键字求1+2+...+n
- 求1+2+…+n,要求不能使用乘除法、for、while、if、else、s witch、case 等关键字以及条件判断语句(A?B:C)和不用循环/goto/递归输出1~100的10种写法
- c笔试面试 之 不用除法操作实现两个正整数的除法
- [VB.NET]利用vb.net创建一个完全可编辑的DataGrid,从而实现操作Access数据库进行增,删,改的功能,前提是不用任何其他的Button
- 不用if、switch、?: 实现a、b比较大小
- c笔试面试 之 不用乘法操作(用逻辑运算)实现两个正整数的除法
- 不用for,if,while计算1--100之间的和