题目描述

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

牛客网刷题地址

思路分析

  利用逻辑运算符的短路特性:
  

  1. 对于A && B,如果A为假,那么就不执行B了;而如果A为真,就会执行B。
  2. 对于A || B,如果A为真,那么就会不执行B了;而如果A为假,就会执行B。
  3. 我们可以使用递归来代替循环,用逻辑运算符&&或者||来代替判断语句。

测试用例

  1. 功能测试:输入5、10求1+2+..+5和1+2+...+10。
  2. 边界值测试:输入0和1。

Java代码

public class Offer064 {
public static void main(String[] args) {
test1();
test2();
test3(); } public static int Sum(int n) {
return Solution1(n);
} private static int Solution1(int n) {
int sum = n;
boolean flag = (n>1) && ((sum+=Solution1(n-1))>0);
// boolean flag = (n==1) || ((sum+=Solution1(n-1))>0);
return sum;
} private static void test1() {
System.out.println(Sum(100));
} private static void test2() { }
private static void test3() { }
}

代码链接

剑指Offer代码-Java

最新文章

  1. Watir-WebDriver关于交互式等待方法,告别一味sleep时代
  2. asp.net web api CORS
  3. Java--剑指offer(7)
  4. C语言 百炼成钢9
  5. SpringMvc入门三----控制器
  6. POJ 1700 cross river (数学模拟)
  7. [转]iOS 应用程序的生命周期
  8. ROS_Kinetic_24 使用catkin_create_qt_pkg快速创建qt-ros功能包
  9. redist命令操作(三)--集合Set,有序集合ZSet
  10. 基于MATLAB搭建的DDS模型
  11. MySQL表结构的优化和设计
  12. 如何使用Scrapy框架实现网络爬虫
  13. office2007每次打开都要配置文件,怎么取消配置(可行)
  14. The Little Prince-12/03
  15. leetcode998
  16. ICS 组件 for lazarus 1.0.12
  17. 转:导出csv文件数字会自动变科学计数法的解决方法
  18. 在Kali Linux上编译Windows EXP
  19. 在MFC中改变控件的TAB顺序
  20. L3-015. 球队“食物链”(dfs)

热门文章

  1. (13)ASP.NET Core 中的选项模式(Options)
  2. 初试kafka消息队列中间件一 (只适合初学者哈)
  3. RocketMq中网络通信之服务端
  4. Linux curl 常用示例
  5. Linux文件及目录管理
  6. (三)c#Winform自定义控件-有图标的按钮
  7. Mac 安装 homebrew 流程 以及 停在 Updating Homebrew等 常见错误解决方法
  8. 7.19 包 logging模块 hashlib模块 openpyxl模块 深浅拷贝
  9. Arranging Your Team HDU - 3720 【DFS】
  10. 打包一沓开源的 C/C++ 包管理工具送给你!