当前位置: 首页 > news >正文

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

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

  • 1. 题目
  • 2. 解题思路
  • 3. 数据类型功能函数总结
  • 4. java代码

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;}
}
http://www.lryc.cn/news/26152.html

相关文章:

  • 2022 年度_职业项目总结_Java技术点归纳
  • 【项目实战】32G的电脑启动IDEA一个后端服务要2min,谁忍的了?
  • 接口自动化面试题汇总(持续更新)
  • SpringBoot实现静态资源映射,登录功能以及访问拦截验证——以黑马瑞吉外卖为例
  • PythonWeb Django PostgreSQL创建Web项目(三)
  • 【Visual Studio】git提交代码时使用GPG
  • 【反序列化漏洞-02】PHP反序列化漏洞实验详解
  • Gateway网关的使用
  • 【LeetCode】背包问题总结
  • Java的开发工具有哪些?这十款工具大厂都在用!
  • web学习-Node.js入门学习
  • 100 eeeee
  • 物盾安全汤晓冬:工业互联网企业如何应对高发的供应链安全风险?
  • 微纳制造技术——基础知识
  • Makefile的使用
  • RealBasicVSR模型转成ONNX以及用c++推理
  • C语言作用域(变量生存的空间)学习
  • Spark性能优化一 概念篇
  • [数据结构]:09-二分查找(顺序表指针实现形式)(C语言实现)
  • 3.基于Label studio的训练数据标注指南:文本分类任务
  • Python进阶-----面向对象3.0(面对对象三大特征之---封装)
  • 软考中级软件设计师备考建议
  • 【机器学习】决策树(理论)
  • VSCode下载与安装使用教程【超详细讲解】
  • 2023年3月北京/上海/广州/深圳DAMA数据管理认证CDGA/CDGP
  • 进程和线程理论知识
  • 华为OD机试用Python实现 -【广播服务器】
  • Solon2 的应用生命周期
  • 学习笔记-架构的演进之服务容错策略设计模式-3月day02
  • 【WEB前端进阶之路】 HTML 全路线学习知识点梳理(上)