递归(走楼梯,阶乘)
递归我记得,我最先接触的递归的例子是汉诺塔。 但是本文现在不讲汉诺塔,嘿嘿! 我们从简单的开始 递归现象发生于递归函数,递归函数是直接或者间接的调用自己本身的这么一种函数。 举个例子 求从1连成乘到n的积,也就是求 n! 。其中就是重复的去用一个数乘一个数,接着再乘一个数,一直乘到100;我们用递归完成, public int recursion ( int i , int n ) { if ( i == n ) return n ; return i * recursion ( i + 1 ) ; } 函数recursion自己调用自己,这就是递归现象。 递归是一种很棒的算法思想,你只需要找到复杂问题中最小的重复单元或者说可能性单元,然后复杂的细节就交给计算机吧! 例子二,说有一个n级的台阶,每一步有两种走法,每次跨一步或者跨两步,问从第一阶开始,走到最后一阶有几种不同的走法。 我们知道,每一次向前都有两种走法,一阶或者两阶。问走到最后一阶有多少种走法,走到最后一阶就是说每次一步或者两步的一种组合只要能走到最后一阶,就算一种成功的组合。 每一步两种可能性,有n个台阶。问题是复杂的,但是其中最小的重复单元很明显,就是每次所面临的两种可能性,最后需要满足组合步数等于台阶数就行。 int ans = 0 ; //定义一个全局变量 记录符合要求的组合数 public void