程序员面试题精选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”的功能。    基于以上思路,代码如下:
// 程序员面试题精选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。