Leetcode面試題64. 求1+2+…+n[Med] -JAVA

題目傳送門

Leetcode面試題64. 求1+2+…+n[Med] -JAVA

題目

思路

求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。

示例 1:

輸入: n = 3
輸出: 6
示例 2:

輸入: n = 9
輸出: 45

限制:

1 <= n <= 10000

解法

短路法
例:
A&&B ,當A 等於false時,B不會執行,則B被短路
A||B 當A等於true 時,B 不會執行,則B被短路

不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)這樣的條件下,使用遞歸實現,
而你最容易想到的是下面的代碼

 public int sumNums(int n) {
        if(n<=0) return 0;
        return n+sumNums(n-1);
    }

不讓用if ,轉化爲短路法 n==0 && sumNum(n-1) 就有這個條件,看代碼吧!

希望下次遇到了還能想起來,本來之前做過類似的,就只想起有個什麼中斷的方法,就是想不起來是啥。

短路法

class Solution {
    int res = 0;
    public int sumNums(int n) {
        boolean x = n>0 && sumNums(n-1)>0; //這裏其實是爲了符合語法不讓報錯,sumNums(n-1) >0其實只是想執行遞歸語句而已,>0是爲了不讓報錯。
        res+=n;
        return res;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章