本帖最后由 yijincheng 于 2016-3-22 14:13 编辑
算出来了 答案是165580141 一亿六千万多种组合。这个涉及了数据结构的知识。楼主听说过递归算法吗?先去了解一下递归算法的思想,这题的解法是相当容易的。
代码写得有点赶,算法肯定还有优化的空间,只不过懒着改了。
大致思路是:
写两个方法,一个方法走一步oneStep;另一个方法走两步twoSteps。
然后先算第一步迈一级台阶的分支,再算第一步迈两级台阶的分支。
oneStep();
twoSteps();
两个方法内部仍然分为两个分支,算第二步迈一级或者第二步迈两级:
- oneStep(){
- oneStep();
- twpSteps();
- }
- twoSteps(){
- oneStep();
- twpSteps();
- }
复制代码
以此类推,算第三步、第四部……
当然,每调用一次oneStep twoSteps,就要有个还剩下几级台阶的变量remainSteps自减1或者2.当remainSteps小于等于0了,方法就要return。然后再全局变量总共有多少种走法的变量total上加1.
|
|