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

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.

主站蜘蛛池模板: 聂荣县| 巢湖市| 蒲江县| 威宁| 塘沽区| 茶陵县| 绿春县| 海林市| 江山市| 东乡| 双鸭山市| 崇仁县| 固始县| 武清区| 修文县| 宁陕县| 白朗县| 平邑县| 嵊泗县| 莫力| 岑溪市| 兰坪| 城口县| 正阳县| 孝感市| 增城市| 调兵山市| 黑龙江省| 三原县| 哈密市| 远安县| 碌曲县| 德江县| 黔南| 宁津县| 会同县| 治多县| 鞍山市| 蓬安县| 平湖市| 天柱县|