【CODE】发散思维能力——牛客·剑指offer

不用加减乘除做加法

写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。

class Solution{
public:
    int Add(int num1,int num2){
        int sum=0;
        int carry=0;
        while(num2!=0){
            sum=num1 ^ num2;//不带进位的结果
            carry=(num1 & num2) << 1;//进位
            num1=sum;
            num2=carry;
        }
        return num1;
    }
};

求1+2+3+...+n

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

class Solution {
public:
    int Sum_Solution(int n) {
        int res=n;
        res && (res+=Sum_Solution(n-1));//使用 && 终止递归
        return res;
    }
};
发布了133 篇原创文章 · 获赞 35 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/Li_Jiaqian/article/details/104240740