《剑指offer》——64、求1+2+…+n
一、题目内容
原题连接:https://leetcode.cn/problems/qiu-12n-lcof/description/
题目:求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
二、个人答案(Java)
思路:高中所学的求等差数列的前n项和已经深入骨髓((n*n+n)/2),另外这里用了简单的递归发现也通过了不知道为什么(明明题目说了不能用if)
代码:
/*
题目:求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
*/
public class offer64 {
public static void main(String[] args) {
int i = sumNums2(100);
System.out.println(i);
}
public static int sumNums(int n) {
return (n*n+n)/2;
}
public static int sumNums2(int n) {
if (n==1){
return 1;
}else {
return n+sumNums(n-1);
}
}
}
/*
class Solution {
public int sumNums(int n) {
}
}*/
三、官方答案(Java)
方法一:递归
思路:
代码:
class Solution {
public int sumNums(int n) {
boolean flag = n > 0 && (n += sumNums(n - 1)) > 0;
return n;
}
}