您的位置:首页 > 其它

智力题总结——求1+2+…+n, 要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。

2014-03-11 13:18 831 查看
面试的时候遇到这个问题,其实很简单,但是条件太苛刻,这完全是个智力题:

题目:求1+2+…+n,

要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。

其实会有很多种解法,有构造函数办法的,但是下面给出了一个简单的代码-----巧用递归算法和条件判断。

#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
  
int add_fun(int n, int & sum)  
{  
    n && add_fun(n-1, sum);  
    return (sum += n);  
}  
  
int main()  
{  
    int sum = 0;  
    int n = 100;  
  
    printf("1+2+...+n = %d\n", add_fun(n, sum));  
  
    return 0;  
}
本质还是递归,巧用了&&的判断条件!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐