一、练习题

1. 写一个函数,输入两个实数,计算这两个实数的调和平均数(调和平均数:2\frac{x\cdot y}{x+y})。

package Study

func fun(a!: Float64 = 2.0, b!: Float64 = 3.0): Float64 {
    return 2.0 * a * b / (a + b);
}

main(): Int64 {
    println(fun())
    return 0
}

2. 写一个函数,倒叙输出1,2,3,4,5。

package Study

func fun(num!: Int64 = 5) {
    for (i in num..0: -1) {
        print("${i} ")
    }
}

main(): Int64 {
    fun()
    return 0
}

3. 写一个函数,计算自然数n的阶乘。

package Study

func fun(n: Int64): Int64 {
    if (n == 0 || n == 1) {
        return 1
    } else {
        return n * fun(n - 1)
    }
}

main(): Int64 {
    println(fun(5))
    return 0
}

4. 写一个函数,计算斐波那契数列的第n项(斐波那契数列:a_{n}=\left\{\begin{matrix} 1 & n=1\\ 1 & n=2\\ a_{n-1} + a_{n-2}& n>2 \end{matrix}\right.)。

package Study

// 方法1
func fun1(n: Int64): Int64 {
    if (n == 1 || n == 2) {
        return 1
    } else {
        return fun1(n - 1) + fun1(n - 2)
    }
}

// 方法2
func fun2(n: Int64): Int64 {
    // 初始值为数列第1项,为当前项的前2项
    var a = 1
    // 初始值为数列第2项,为当前项的前1项
    var b = 1
    // 当前项
    var c = 0
    // 项数
    var i = 3
    if (n == 1 || n == 2) {
        return 1
    } else {
        while (i <= n) {
            c = a + b
            a = b
            b = c
            i++
        }
        return c
    }
}

main(): Int64 {
    println(fun1(7))
    println(fun2(7))
    return 0
}

5. 写一个函数,计算两个自然数的最小公倍数(最小公倍数:几个数共有的倍数中除0以外最小的那个数)。

package Study

/*
* 求最大公因数
*/
func fun1(x:Int64, y:Int64): Int64 {
    var m = x
    var n = y
    var temp = m % n
    while (temp != 0) {
        // n作为被除数
        m = n
        // 余数做除数
        n = temp
        // 求余数
        temp = m % n
    }
    return n
}

/*
* 求最小公倍数
*/
func fun2(x:Int64, y:Int64): Int64 {
    return x * y / fun1(x, y)
}

main(): Int64 {
    println(fun2(7, 8))
    return 0
}

6. 写一个递归函数,计算1+2+3+4+...+n的和。

package Study

func fun(n: Int64): Int64 {
    if (n == 1) {
        return 1
    } else if (n > 1) {
        return n + fun(n - 1)
    } else {
        return 0
    }
}

main(): Int64 {
    println(fun(100))
    return 0
}

二、小结

本章为大家详细的介绍了仓颉编程语言中函数练习题,下一章,为大家带来结构体的内容。最后,创作不易,如果大家觉得我的文章对学习仓颉服务端开发有帮助的话,就动动小手,点个免费的赞吧!收到的赞越多,我的创作动力也会越大哦,谢谢大家🌹🌹🌹!!!

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐