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

时间:2021-11-03 05:37:48

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);
}

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