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

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.

主站蜘蛛池模板: 壤塘县| 屏山县| 香河县| 清河县| 琼海市| 攀枝花市| 霍林郭勒市| 永德县| 安阳县| 武强县| 巴彦县| 威海市| 麻江县| 盐池县| 广平县| 宿松县| 南京市| 开封县| 许昌市| 吉安县| 莆田市| 利辛县| 中阳县| 旌德县| 乐亭县| 杂多县| 盐津县| 韶山市| 永嘉县| 中阳县| 乳源| 西城区| 温宿县| 内江市| 义乌市| 永年县| 宁明县| 儋州市| 广丰县| 灵台县| 奉贤区|