求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中實現並行請求兩種方式Java並行
- 在Java中,使用HttpUtils實現傳送HTTP請求JavaHTTP
- JS實現序列請求JS
- Java 用jetty實現HTTP伺服器 獲取 Get 請求體JavaJettyHTTP伺服器
- 演算法案例2-求冰雹數 java程式碼實現演算法Java
- 用whistle實現Abort請求
- KKB : Jquery實現Ajax請求jQuery
- 使用 Promise 實現任務佇列傳送請求,實現最大請求數目限制Promise佇列
- 解析Fetch實現請求資料
- 利用fetch方法實現Ajax請求
- 在 DotNetty 中實現同步請求Netty
- 演算法練習:求字串的最長重複子串(Java實現)演算法字串Java
- Java後端中的請求最佳化:從請求合併到非同步處理的實現策略Java後端非同步
- java實現樹Java
- Jmeter 對 Java 請求的測試實施JMeterJava
- Ajax+SpringMVC實現跨域請求SpringMVC跨域
- java實現快速排序Java排序
- PAT-A Java實現Java
- 快速排序(java實現)排序Java
- 快速排序 java實現排序Java
- JAVA AQS 實現原理JavaAQS
- Nginx實現請求的負載均衡 + keepalived實現Nginx的高可用Nginx負載
- java post 請求Java
- 如何用istio實現請求超時管理
- hadoop 自定義GroupComparator實現求最大值Hadoop
- flutter dio網路請求封裝實現Flutter封裝
- python3 實現 get 和 post 請求Python
- 網路請求-手把手實現axiosiOS
- 簡單的實現jsonp跨域請求JSON跨域
- 使用Retrofit+RxJava實現網路請求RxJava
- JMeter擴充套件Java請求實現WebRTC本地音視訊推流壓測指令碼JMeter套件JavaWeb指令碼
- java實現兩個文字相似度 simHash 實現Java
- Java 實現 markdown轉HtmlJavaHTML
- Java實現DDD中UnitOfWorkJava
- 並查集java實現並查集Java
- Java實現非同步呼叫Java非同步
- JAVA 實現 - 雜湊表Java
- Java 實現彙總排序Java排序