官术网_书友最值得收藏!

Recursion

Recursion is a function's call to itself. In simple words, a recursive function is a function which calls itself. Functional programming recommends use of recursion over the use of iterative looping constructs. For the same obvious reasons, Scala also recommends use of recursion. Let's first take a look at a recursive function:

object RecursionEx extends App {

/*
* 2 to the power n
* only works for positive integers!
*/
def power2toN(n: Int): Int = if(n == 0) 1 else 2 * power2toN(n - 1)

println(power2toN(2))
println(power2toN(4))
println(power2toN(6))
}

The following is the result:

4 
16
64

We've defined a function power2toN which expects an integer n, checks for n value and if it's not 0, the function calls itself, decrementing n integer's value till the number n becomes 0. Then comes multiplying the value with 2 with each recursive call to get the desired result.

Consider the following:

def power2toN(n: Int) = if(n == 0) 1 else (2 * power2toN(n - 1)) 

The Scala compiler gives an error stating Recursive method power2N needs result type. This is a required condition by the Scala compiler. We have to explicitly define the response type of a recursive function—that's the reason we have to give the return type with the method definition.

主站蜘蛛池模板: 璧山县| 新竹县| 凤山市| 双城市| 陵水| 宽甸| 志丹县| 浦东新区| 昌黎县| 方正县| 察隅县| 象州县| 南昌县| 清苑县| 贵定县| 肥东县| 搜索| 龙州县| 阳泉市| 丽水市| 长寿区| 七台河市| 岳阳县| 同心县| 万载县| 石泉县| 太谷县| 林口县| 双柏县| 航空| 龙里县| 扶绥县| 汤阴县| 缙云县| 六盘水市| 叙永县| 安龙县| 元谋县| 定远县| 泗阳县| 巴楚县|