初识递归

终极三问,What, How, Why

1.What, 递归到底是个啥?

定义:递归算法(recursion algorithm)在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法。递归式方法可以被用于解决很多的计算机科学问题,因此它是计算机科学中十分重要的一个概念。绝大多数编程语言支持函数的自调用,在这些语言中函数可以通过调用自身来进行递归。计算理论可以证明递归的作用可以完全取代循环,因此在很多函数编程语言(如Scheme)中习惯用递归来实现循环

什么玩意,能不能说人话,好吧,通俗的理解是这样的:

递归是一种自己调用自己的函数的方法,用于**规律性的数据处理**。相对应于递推(循环),代码简洁明了,易于阅读,但很耗费内存,
数据过大易引起程序崩溃

2.How,如何使用递归?

举个例子,阶乘:

/**
 * Title: 阶乘的实现 
 * Description:
 *      递归解法
 */
public class Factorial {
    /**     
     * @description 阶乘的递归实现       
     * @created 2017年5月10日 下午8:45:48     
     * @param n
     * @return     
     */
    public static long f(int n){
        if(n == 1)   // 递归终止条件 
            return 1;    // 简单情景

        return n*f(n-1);  // 此行是关键,f(n-1)就是前面说的自己调用自己的函数,n*f(n-1)代表的是规律,也就是问题抽象出来的逻辑
    }

3.Why , 为什么要用递归?

为啥,方便呗,不是有句话说递归方便了程序员,苦了电脑嘛,但为什么又不是很长见呢,太费算力了,少用,分情况用,切记。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值