[leetcode]面试题64. 求1+2+…+n

  • 个人博客:https://javaniuniu.com/
  • 难度:中等
  • 本题涉及算法:递归
  • 思路:递归
  • 类似题型:

题目 面试题64. 求1+2+…+n

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

示例 1:

输入: n = 3
输出: 6

示例 2:

输入: n = 9
输出: 45

限制:

1 <= n <= 10000

方法一 递归

  • 解题思路
    • 题目其实指明了要用 递归
  • 复杂度分析
    • 时间复杂度:O(n)。递归函数递归 n 次,每次递归中计算时间复杂度为 O(1),因此总时间复杂度为 O(n)
    • 空间复杂度:O(n)。递归函数的空间复杂度取决于递归调用栈的深度,这里递归函数调用栈深度为 O(n),因此空间复杂度为 O(n)

python

class Solution(object):
    def sumNums(self, n):
        """
        :type n: int
        :rtype: int
        """
        # and这个逻辑运算的本质是——如果A&&B,A为false,B是不计算的;只有当A为true,才会继续计算B
        return n!=0 and n + self.sumNums(n - 1)

java

class Solution {
    public int sumNums(int n) {
        if (n == 1) return n;
        n += sumNums(n - 1);
        return n;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容