AcWing 84. 求1 + 2 + … + n

AcWing 84. 求1 + 2 + … + n

写在前面:AcWing是由北大一神级人物——“大雪菜” 创办的算法交流社区, 里面除了正常 oj 网站的功能之外, 还提供单人训练、双人匹配、云端操作系统等模式,除此之外不定期举行各种打卡活动,而且可以分享题解和心得,完全可以当成空间来玩。欢迎大家入坑。
点击前往:AcWing

原题链接

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

样例

输入:10
输出:55

解题思路
这是一个没什么意思而且很狗的题, 常规操作不能用. 只能想别的办法
这个题正常来说有三种做法:

  1. 求和公式 (n+1)*n/2, 但是不能用乘除法
  2. 循环从1加到n, 但是不能使用各种循环
  3. dfs, 但是dfs里面需要判断语句

写之前, 我们得知道, 一个性质:
假如有一个语句: A && B, 如果 A 是 false 的话, B语句是不执行的, 因为这个语句一定是 false
或者语句: A || B, 如果 A 是 true 的话, B语句是不执行的, 因为这个语句一定是 true
这是系统为了减少不必要的计算而设置的.
可以通过这个性质满足判断的要求.
dfs公式: getSum(n)=n+getSum(n-1)

已过代码

class Solution {
public:
    int getSum(int n) {//因为这个函数返回的是int型, 所以不用 long long
        int ans=n;
        (n>0) && (ans+=getSum(n-1));
        //先判断n是否大于0, 大于 0 的话执行下一句, 否则直接跳过.
        return ans;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值