zoukankan      html  css  js  c++  java
  • 递归

    递归是一个及其神奇的方法,可以用很简单代码实现一些比较复杂的思维

    拿一个大家都很感兴趣的问题作为例子:

    假设每年最后的一天存入10w,每年理财获益10%,10年后是多少钱?

    // year工作年限,per年收益,money年存入
    function sum(year, per, money) {
        if(year>1) {
            return sum(--year, per, money) * (per + 1) + money
        } else {
            return money
        }
    }

    算下:

    sum(10,0.1,10)
    //159.37424601000006

    这就是一个典型的递归例子了

    sum(--year, per, money) * (per + 1) + money

    递归最终会形成   ((((sum(1) * (per+1) + money) * (per+1) + money) * (per+1) + money) * .....)的模式

    ps:知道调用栈的童鞋,大概会知道其实从性能上说,如果数据量很大,递归是很占内存的,往往性能上比不上循环,但是依然有很多算法都用了递归,因为递归确实使得程序代码思路更加清晰明了!!

    当然又想用递归又不想把调用栈堆慢,也是有解决方法的就是“尾递归”了,并非每一个编程语言都支持“尾递归”,这个算法博主会在以后的博文介绍。

  • 相关阅读:
    HDU4465 Candy
    《有关概率和期望问题的研究》读书笔记(完成度:40%)
    HDU5583 Kingdom of Black and White
    Gym100548F Color
    HDU6035 Colorful Tree
    Echarts笔记
    springMVC
    Struts2
    SSH框架学习中遇到的问题
    I/O流
  • 原文地址:https://www.cnblogs.com/amiezhang/p/8485912.html
Copyright © 2011-2022 走看看