題目:求1+2+…+n, 要求不能使用乘除法、for、while、if、else、switch、case等關(guān)鍵字以及條件判斷語句(A?B:C).
經(jīng)典解法,通過表達(dá)式來實現(xiàn):
<pre><code>`
var sum:Int = 0;
n > 0 && (sum = n + sumNumber(n - 1))
return sum
var sum:Int = 0;
n == 0 || (sum = n + sumNumber(n - 1))
return sum`<code></pre>
不過Swift不支持表達(dá)式的是解析,通過guard來實現(xiàn):
<pre><code>`
func sumNumber(n:Int)->Int {
guard n > 0 else {
return 0
}
return n + sumNumber(n: n-1)
}`</code></pre>
測試代碼:
<pre><code>var speSum:Sum = Sum() var speMax:Int = 100 var speResult:Int = speSum.sumNumber(n: speMax) print("1+..+\(speMax)和---\(speResult)")</code></pre>