剑指Offer64.求1+2+..n C++

1、题目描述

求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
示例 1:
输入: n = 3
输出: 6
示例 2:
输入: n = 9
输出: 45

2、VS2019上运行

递归的方法

#include 

class Solution {
public:
    /**
     * 计算从1到n的数字的和
     * @param n 目标数字
     * @return 从1到n的数字的和
     */
    int sumNums(int n) {
        // 基本情况:当n等于0时,返回0
        if (n == 0) {
            return 0;
        }

        // 使用逻辑与运算符进行递归计算
        // n && (n += sumNums(n-1)):
        // 如果n不为0,将sumNums(n-1)的结果累加到n上继续计算
        n += sumNums(n - 1);

        return n;
    }
};

int main() {
    // 创建Solution类的实例
    Solution solution;

    // 测试sumNums函数
    int n = 5;
    int sum = solution.sumNums(n);

    // 打印结果
    std::cout << "从1到" << n << "的数字的和为:" << sum << std::endl;

    return 0;
}

从1到5的数字的和为:15

你可能感兴趣的:(剑指Offer刷题,c++,算法,力扣)