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

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

  • 相关阅读:
    第07组 Beta冲刺(2/5)
    第07组 Beta冲刺(1/5)
    第07组 Alpha事后诸葛亮
    第07组 Alpha冲刺(5/6)
    第07组 Alpha冲刺(6/6)
    软工实践个人总结
    第01组 Beta版本演示
    第01组 Beta冲刺(5/5)
    第01组 Beta冲刺(4/5)
    第01组 Beta冲刺(3/5)
  • 原文地址:https://www.cnblogs.com/amiezhang/p/8485912.html
Copyright © 2011-2022 走看看