求1+2+...+n(Java實現)
本題為劍指offer面試題46
牛客網測試地址:https://www.nowcoder.com/questionTerminal/7a0da8fc483247ff8800059e12d7caf1
- 時間限制:1秒空間限制:32768K
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。
Java程式碼:
package go.jacob.day518;
/*
* [程式設計題]求1+2+3+...+n
*
* 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、
* switch、case等關鍵字及條件判斷語句(A?B:C)。
*/
public class Demo1 {
/*
* 這是借鑑劍指offer上的解法一:利用建構函式求解 很遺憾,這種方法只能在c++上實現 因為Demo1[] demo1s=new
* Demo1[n];並不會呼叫建構函式 所以這是一種錯誤解法!!!!!!
*/
public static int Sum_Solution(int n) {
Demo1.reset();
Demo1[] demo1s = new Demo1[n];
return Demo1.getSum();
}
private static int N;
private static int sum;
/*
* 建構函式
*/
public Demo1() {
N++;
sum += N;
}
/*
* N與sum都是靜態成員變數,所以每一次呼叫必須進行重置
*/
public static void reset() {
N = 0;
sum = 0;
}
/*
* 獲得sum
*/
public static int getSum() {
return sum;
}
}
/*
* 方法二:利用短路性質
*
* 如果n=0,直接返回0;如果n>0,計算result+= Sum_Solution(n - 1))
*/
class Demo2 {
/*
* value沒有用處,只是為了boolean value=(n>0)&&((result+=Sum_Solution(n-1))==0)能執行
*/
public int Sum_Solution(int n) {
int result = n;
boolean value = (n > 0) && ((result += Sum_Solution(n - 1)) == 0);
return result;
}
}
/*
* 方法三,變相利用公式sum=n(n+1)/2
* 有可能會不符合題意
*/
class Demo3{
public int Sum_Solution(int n) {
int sum=0;
sum=(int) (Math.pow((double)n, 2)+n)>>1;
return sum;
}
}
相關文章
- Java實現Http請求JavaHTTP
- java實現https請求JavaHTTP
- java|HttpsURLConnection實現https請求JavaHTTP
- Java中實現並行請求兩種方式Java並行
- 在Java中,使用HttpUtils實現傳送HTTP請求JavaHTTP
- JS實現序列請求JS
- 求實習機會 java 北京Java
- 演算法案例2-求冰雹數 java程式碼實現演算法Java
- 用whistle實現Abort請求
- KKB : Jquery實現Ajax請求jQuery
- 使用 Promise 實現任務佇列傳送請求,實現最大請求數目限制Promise佇列
- mao/reduce實現求平均值
- 演算法練習:求字串的最長重複子串(Java實現)演算法字串Java
- 利用fetch方法實現Ajax請求
- 在 DotNetty 中實現同步請求Netty
- 解析Fetch實現請求資料
- 求兩向量距離的CUDA實現
- 實現傳送多個Ajax請求
- Jmeter 對 Java 請求的測試實施JMeterJava
- java實現樹Java
- Java實現-子集Java
- Ajax+SpringMVC實現跨域請求SpringMVC跨域
- 如何用istio實現請求超時管理
- flutter dio網路請求封裝實現Flutter封裝
- 使用Retrofit+RxJava實現網路請求RxJava
- c++實現求眾數及其重數C++
- ajax跨域post請求,如何實現呢跨域
- RxJava+Retrofit+Gson實現網路請求RxJava
- PHP實現bitmap點陣圖排序求交集PHP排序
- java post 請求Java
- 快速排序 java實現排序Java
- JAVA AQS 實現原理JavaAQS
- java實現快速排序Java排序
- PAT-A Java實現Java
- 快速排序(java實現)排序Java
- Java實現-全排列Java
- 伸展樹Java實現Java
- 希爾排序java實現排序Java