实现1+2+3...+n,不能使用*、/、循环、条件判断、选择相关的关键字

来源:互联网 发布:淘宝手机靓号 编辑:程序博客网 时间:2024/05/19 20:21

1、实现1~n之和,不能使用乘除法、循环、条件判断、选择相关的关键字,你会想到使用什么?

首先想到递归,后来又想到逻辑运算,还有就是也可以用“+、-”法;哈哈

int sum=0;int FunTest(int n,int &sum){        n&&FunTest(n-1,sum);    return (sum+=n);}

后来又想到了类–静态成员变量、函数–

class test{public:    test()    {        n++;        sum+=n;    }    static int GetSum()    {        return sum;    }private:    static int n;    static int sum;};//静态成员变量必须在类外声明;int test::n=0;int test::sum=0;int main(){      test*p =new test[10];      int sum=test::GetSum();      cout<<sum<<endl;      delete[] p;      system("pause");    return 0;}

2、实现一个Add函数,让两个数相加,但是不能使用+、-、*、/等四则运算符,也不能用++、–等等 ;

我第一个想法就是可以使用位运算符试试,结果试成功了;

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>int sum=0;int Add(int n,int m,int &sum){    return sum=(n|m);}

方法其实没有那么难,但是问题有些古怪,所以有时候就会想不到……哈哈

阅读全文
0 1