特殊方法求 1 到 n 的和
来源:互联网 发布:淘宝自制护肤品曝光 编辑:程序博客网 时间:2024/06/06 01:18
1. 描述
求 1+2+...+n,要求不能使用乘除法、for、while、if、else、switch、case 等关键字以及条件判断语
句(A?B:C)。
这道题其实没什么意思,但是可以温习一下解决的方法所用到的知识。
2. 解法一
可以用递归做,但是什么时候停止的,如果用if语句那肯定是很用以了,当n = 0时停止递归。还可以用另外一种办法,就是当 n = 0 时调用另一个函数,这个函数唯一的语句就是返回0。用指向函数的指针可以实现的。
代码如下:
typedef int (* func)(int);int sum0(int zero){ return 0;}int sum(int n){ func call_sum[] = {sum0, sum}; return n + (*call_sum[!! n])(n - 1); }
关键在于 !!n 的语句,当n != 0时, !!n 始终为1,因此调用的函数始终是sum,当n =0时,!!n 为0,调用的函数为sum0。
^_^, 是不是很骚?
3. 解法二
这个解法更简单,但只能在GCC编译器下执行。由于需要点知识,等学会了在来解答。
- 特殊方法求 1 到 n 的和
- 特殊方法求1~n的和
- 特殊方法求1~n的和
- 二分法 求1到N的和
- 求1到n的和
- 求1到n的倒数和
- Q46:求1到n的和
- 求1到n的n次方和
- 求1加到n的发散思维方法
- 编写函数用递归求1到N的和
- java 求1到n的阶乘和
- 剑指off-递归求1到n的和
- 求1到n间的奇数和
- c语言:求n!从1到20的和
- 剑指offer——求1到n的和
- FAFU OJ 求1到n和
- 给个n,求1到n的所有数的约数个数的和~
- 给个n,求1到n的所有数的约数个数的和~
- .Net中的缓存问题
- pthread条件变量函数的使用
- Ubuntu Linux下的QQ使用方案
- 区域增长法(vc实现)
- NHibernate异常"Found shared references to a collection"
- 特殊方法求 1 到 n 的和
- Flex 跳转URL
- 共模信号 差模信号 差动放大器
- myeclipse安装svn插件的多种方式
- 网络最大流之一般增广路方法------Ford-Fulkerson
- hadoop lzo文件的并行map处理
- 常见设计模式之【单例模式】
- ARC中管理Toll-free Bridging
- MyEclipse下的svn使用