算法学习之递归算法

      软件开发过程中,函数调用函数自身的运算方式归纳为递归。通常是一个主要问题分解为多个相似小问题去解决,计算过程是循环调用自身,直到达到临界条件,返回退出。

      编写递归函数时,必须指定一个函数执行可到达的边界,当函数达到这个边界,停止递归。因此每个递归函数有两部分组成:递归条件和基线条件。递归条件是函数调用自己,基线条件就是函数可到到达的边界,停止调用自身。如果函数指定一个不可到达的基线条件,则会无限循环下去。调用下一次函数时,当前函数暂停并处于未完成状态,该函数的所有变量值都还保存在内存中,应用会频繁的调用函数,分配内存空间,直到内存溢出系统卡死,这种情况是最可怕的。

      Java代码demo:

    static long fibonacciSequence(long num) {
        //递归
        if ((num == 1) || (num == 0)) {
            return num;
        }
        return fibonacciSequence(num - 1) + fibonacciSequence(num - 2);
    }

以上是著名的斐波纳挈数列。它指的是这样一个数列:0,1,1,2,3,5,8,13......从这组数可以很明显看出这样一个规律:从第三个数开始,后边一个数一定是在其之前两个数的和。使用递归的话,代码简洁易懂。

注意:java使用递归要考虑。内存栈的影响,这里不在介绍。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值