博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《剑指 Offer》——47、求 1+2+3+4+···+n
阅读量:2343 次
发布时间:2019-05-10

本文共 778 字,大约阅读时间需要 2 分钟。

1. 本题知识点

数学

2. 题目描述

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

3. 解题思路

我们可以考虑一下有哪些思路:

  1. 可以使用求和公式,但要求不能使用乘除法,所以这个思路不行

    s u m = n ∗ ( 1 + n ) 2 sum=\frac{n*(1+n)}{2} sum=2n(1+n)

  2. 可以使用循环,但要求不能使用 for、while,所以这个思路不行

    public int Sum_Solution(int n) {
    int sum = 0; for (int i = 1; i <= n; i++) {
    sum += i; } return sum;}
  3. 可以使用递归,但要求不能使用 if,所以这个思路不行。

    public int Sum_Solution(int n) {
    if (n == 1) {
    return 1; } return n + Sum_Solution(n - 1);}

但我们能不能将 if 换掉成的别的东西呢?于是想到了 &&(短路与)

比如,A && B

  • 当 A 为 true 时,则会执行 B;
  • 当 A 为 false 时,则不会执行 B

这样就达到了条件判断的效果

4. 代码

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

转载地址:http://tyjvb.baihongyu.com/

你可能感兴趣的文章
C语言常见错误
查看>>
Init中的next_token()函数
查看>>
STL之MAP和Vector
查看>>
智能指针 unique_ptr
查看>>
Init.rc配置文件Action字段解析
查看>>
uml问题解决
查看>>
cpu结构框图
查看>>
mmap内存映射和shmget共享内存
查看>>
c中int和long类型
查看>>
二维字符数组与字符串数组
查看>>
c中指针赋值为0
查看>>
c中求二维数组的行数和列数
查看>>
三目运算符跟赋值运算符的计算顺序
查看>>
elf文件与符号表
查看>>
linux net-snmp(之安装及配置)
查看>>
linux net-snmp(之android移植)
查看>>
linux net-snmp(之mib2c工具生成标量节点代码)
查看>>
linux net-snmp(之mib2c工具生成表格代码)
查看>>
扩展程序运行时的库路径
查看>>
【CUDA并行程序设计系列(4)】CUDA内存
查看>>