题目:求1+2+…+n, 要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C).
经典解法,通过表达式来实现:
<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不支持表达式的是解析,通过guard来实现:
<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>