24.递归

  • 递归:把一个大型复杂的问题层层转化为一个与问题相似的规模较小的问题来求解
  • 只需少量的程序就可描述出解题过程所需要的多次重复运算

1.求一个数的阶乘

fun main(args: Array<String>) {
    //阶乘 5阶乘 5*4*3*2*1
    val fact = fact(5)
    println(fact)
}

fun fact(n: Int): Int {
    if (n == 1) return 1
    return n * fact(n - 1)
}

2.斐波那契数列

fun main(args: Array<String>) {
    //阶乘 5阶乘 5*4*3*2*1
    val fact = fibonacci(40)
    println(fact)
}

/**
 * 求第n个斐波那契数列
 */
fun fibonacci(n: Int): Int {
    if (n == 1) return 1
    if (n == 2) return 1
    return fibonacci(n - 1) + fibonacci(n - 2)
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 计算机科学的新学生通常难以理解递归程序设计的概念。递归思想之所以困难,原因在于它非常像是循环推理(circular...
    启明_b56f阅读 7,427评论 0 20
  • 什么是递归函数 一种计算过程,如果其中每一步都要用到前一步或前几步的结果,称为递归的。用递归过程定义的函数,称为递...
    古月半半阅读 4,569评论 0 1
  • 栈与递归 栈还有一个重要应用是在程序设计语言中实现递归。一个直接调用自己或通过一系列的调用语句间接的调用自己的函数...
    Mr_Bluyee阅读 3,135评论 0 1
  • 前言 2. 实现 Singleton 3. 数组中重复的数字 4. 二维数组中的查找 5. 替换空格 6. 从尾到...
    Observer_____阅读 2,990评论 0 1
  • 七夕要到了 最想的,竟是在海南的ly姐 算不算单相思。我最怕毕业了不能永远在一起。把你带回湖州,让你背井离乡,来支...
    SaoZ阅读 210评论 0 0