首页 > 编程语言 >剑指 Offer 64. 求 1 + 2 + … + n(java解题)

剑指 Offer 64. 求 1 + 2 + … + n(java解题)

时间:2023-03-02 11:14:43浏览次数:44  
标签:java Offer sumNums else 解题 64 使用 return

目录

1. 题目

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

示例 1:

输入: n = 3
输出: 6

示例 2:

输入: n = 9
输出: 45

限制:

1 <= n <= 10000

作者:Krahets
链接:https://leetcode.cn/leetbook/read/illustration-of-algorithm/9h44cj/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2. 解题思路

求解这个公式,首先的常见想法是使用循环,但是for、while禁止使用,第二个思路是形成公式,1+2+……+n=n*(n+1)/2,但是没办法将公式转化为非乘除的形式,最后,为了“消除循环”,考虑使用递归。递归除了需要使用if-else,其他方面能够满足要求。
在解题的过程中,我一时间没有意识到if-else被禁止,因此还是使用传统的递归结构。
但是官方题解显然更进一步,使用逻辑表达式消除了if-else结构,相当巧妙

boolean x=n>1 && (n+=sumNums(n-1))>0;
return n;
//等价于
if(n==1||n==0){
    return 0;
}
else{
    return n+sumNums(n-1);
}

3. 数据类型功能函数总结

//无

4. java代码

class Solution {
    public int sumNums(int n) {
        boolean x=n>1 && (n+=sumNums(n-1))>0;
        return n;
    }
}

标签:java,Offer,sumNums,else,解题,64,使用,return
From: https://www.cnblogs.com/CrazyPixel/p/17171095.html

相关文章

  • java中listmap根据map某一字段排序公共方法
    /***List<Map>根据map字段排序**@paramlist*@paramfeild排序字段*@paramsortTyp排序方式desc-倒序asc-正序*@return......
  • JavaScript的Dom基本操作
    获取元素的方式:根据id名称获取   document.getElementById("id名称")根据元素类名获取    document.getElementsClassName("元素类名")根据元素标......
  • JavaFX Scene Builder 下载安装
    (JavaFXSceneBuilder下载安装)SceneBuilder是创建漂亮的用户界面,并将您的设计转化为交互式原型。SceneBuilder通过创建可以直接在JavaFX应用程序中使用的用户界面,缩......
  • Java开始指路之Hello world
    1.新建文件夹code,然后创建Hello.txt,重命名为Hello.java,进行编写代码2.cmd对应目录3.javacHello.java,(编译Hello.java文件,生成Hello.class文件)4.javaHello(运行Hel......
  • JavaScript 正则表达式
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <scripttype="text/javascript"> /* *正则表达式 * [email protected] ......
  • JavaScript 包装类
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <scripttype="text/javascript"> /* *基本数据类型 * StringNumberBoole......
  • JavaScript 字符串的相关方法
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <scripttype="text/javascript"> //创建一个字符串 varstr="HelloAtguigu"; ......
  • JavaScript forEach
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <scripttype="text/javascript"> /* *一般我们都是使用for循环去遍历数组, ......
  • JAVAWEB学习-Servlet实现完整功能增删改查-完整代码
    importcom.DB;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet......
  • JavaScript 数组去重
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <scripttype="text/javascript"> //创建一个数组 vararr=[1,2,3,2,2,1,3,4......