【leetcode C语言实现】剑指 Offer 64.求1+2+...+n

    技术2026-04-07  7

    题目描述

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

    示例 1:

    输入: n = 3 输出: 6 示例 2:

    输入: n = 9 输出: 45

    限制:

    1 <= n <= 10000

    来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/qiu-12n-lcof

    解题思路

    由于题目限制不能使用乘除及一些关键字,可以考虑使用比较贴近硬件操作的位操作和逻辑运算,利用逻辑运算与的‘短路效应’,可以实现递归的终止。

    代码

    int sumNums(int n){ n && (n += sumNums(n - 1)); return n; }

    测试代码及结果

    int main() { printf("%d\n", sumNums(5)); printf("%d\n", sumNums(0)); printf("%d\n", sumNums(1)); return 0; }

    执行结果

    时间复杂度:O(n),空间复杂度:O(n)。

    Processed: 0.008, SQL: 9