47 求1+2+3+4+...+n
生活随笔
收集整理的這篇文章主要介紹了
47 求1+2+3+4+...+n
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。
思路一:等差數列求和公式:n*(n+1)/2=(n^2+n)/2,由于不能用除法,因此可以右移一位表示除以2
1 public class Solution { 2 public int Sum_Solution(int n) { 3 if(n<1) return -1; 4 int result = (int)(Math.pow(n,2) + n); 5 return result >> 1; 6 } 7 }?
思路二:? ?&&的短路功能:即A&&B中,加入A為假,那么B就不會被運算,因此把遞歸放在B中,而將終止條件放在A中。
1 public class Solution { 2 public int Sum_Solution(int n) { 3 int sum = n; 4 //n>0是終止條件 5 //(sum+= Sum_Solution(n-1))>0 這個肯定>0,肯定是true 6 //真正的目的是想讓它遞歸地執行里面的加法 7 boolean temp = n>0 && (sum+= Sum_Solution(n-1))>0 ; 8 return sum; 9 } 10 }?
轉載于:https://www.cnblogs.com/shareidea94/p/11156074.html
總結
以上是生活随笔為你收集整理的47 求1+2+3+4+...+n的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 那些把公司当家的程序员,后来怎么样了..
- 下一篇: 消息队列之事务消息,RocketMQ 和