scala 递归实现次方计算(快学scala的习题)
《快学scala》第二章最后一个题是用特定的递归进行计算,但是自己被自己坑了。
记录一下。
写函数计算xn,其中n是整数,使用如下的递归定义:
xn=y2,如果n是正偶数的话,这里的y=x(n/2)
xn = x*x(n-1),如果n是正奇数的话
x0 = 1
xn = 1/x(-n),如果n是负数的话
不得使用return语句
println(XN(2, -1))
def XN(x: Double, n: Int): Double = {
if (n > 0 && n % 2 == 0) XN(XN(x, n / 2), 2)
else if (n > 0 && n % 2 == 1) x * XN(x, n - 1)
else if (n == 0) 1
else 1/XN(x, -n)
// else XN(XN(x, -n), -1)
//这里注意不能 用 else XN(XN(x, -n), -1)
// 如果一直递归 就变成死递归了。。
}
文章已经结束啦
文章版权:Postbird-There I am , in the world more exciting!
本文链接:http://www.ptbird.cn/scala-power-fastscala.html
转载请注明文章原始出处 !
扫描二维码,在手机阅读!